본문 바로가기

전체글139

[그리디] 숫자 카드 게임 2차원 배열에 숫자들이 있다. n,m 을 입력받고 행렬을 만든다. 각 행마다 가장 작은 수들을 고르지만 최종적으로는 가장 큰 수를 출력해야 된다. 아래 예시1을 보면 1행에서는 1, 2행에서는 1, 3행에서는 2가 되서 정답은 2가 된다. [예시] 3 3 3 1 2 4 1 4 2 2 2 다 입력받은 후 작업하는게 아니라 행 하나 입력받을 때마다 min, max 작업을 수행한다. 행 안에서 최소값을 찾은 후에 최대값을 확인해서 계속 갱신해나가는 일반적인 작업이다. n, m = map(int, input().split()) result = 0 for i in range(n): data = list(map(int, input().split())) minValue = min(data) result = max(r.. 2021. 10. 24.
jackson-dataformat-xml 이슈 정리 jackson-dataformat-xml(2.12.4) 를 사용하면서 겪은 이슈를 정리했다. cf) 기존 코드는 jaxb-api(2.1) 을 사용중이었다. 1. interface 네이밍 interface 네이밍은 자바에서 예약어기 때문에 xml element 로 좋은 네이밍은 아니다. 하지만 기존 코드와 똑같이 개발해야 했다. 먼저 바인딩 시킬 필드에 아래와 같이 @XmlElement 애노테이션을 붙이고 name을 interface로 지정했다. @XmlElement(name = "interface") private String interFace; 롬복을 썼기 때문에 자동으로 setter는 아래와 같이 setInterFace 네이밍으로 만들어졌다. public void setInterFace(String .. 2021. 10. 19.
[그리디] 무지의 먹방 라이브 링크 : https://programmers.co.kr/learn/courses/30/lessons/42891 코딩테스트 연습 - 무지의 먹방 라이브 programmers.co.kr 만약 food_times 가 [3, 1, 2] 이고 k가 6라고 했을 때, 한번 순회하면 k는 3이 되고 [2, 0, 1] 이 된다. 다시 한번 순회한다고 했을 때 가운데 0은 건너 뛰게 되고 [1,0,0] 이 된다. 그러므로 배열 형태를 똑같이 유지한채 for문을 돌 필요가 없다. 오름차순으로 정렬해서 낮은 시간(음식 다 먹는데 적게 걸리는)부터 처리하면 된다. 책에서는 우선순위 큐를 활용한다. 그리고 무지가 먹방을 진행하다 food_times 값들이 모두 0이 됐는데 k 값이 남게 되면 -1을 리턴해야 된다. 하지만 꼭 .. 2021. 10. 17.
[그리디] 볼링공 고르기 A, B 두 사람이 볼링을 치고 있다. 볼링공은 총 N개 있고 볼링공의 무게는 각각 다르며 1부터 M까지의 자연수 형태로 무게가 존재한다.(1 2021. 10. 11.
[그리디] 만들 수 없는 금액 N 개의 동전을 가지고 있고, 화폐 단위는 1,000,000 이하의 자연수다. 이때 N 개의 동전을 이용하여 만들 수 없는 양의 정수 금액 중 최솟값을 구해라. 예를 들어 N = 5이고 각 동전이 3원, 2원, 1원, 1원, 9원 이라면 만들 수 없는 양의 정수 금액 중 최솟값은 8원이다. 또 다른 예로 N = 3이고 각 동전이 3원, 5원, 7원 이라면 답은 1원이다. 문제를 보고 처음든 생각은 이랬다. 가능한 모든 수를 Set으로 저장해놓고 1부터 1,000,000 까지 for문 돌려서 없는 숫자가 나오면 답인것으로. 그런데 모든 수를 구하기 위한 방식이 마땅치 않았다. 답 코드를 보면 먼저 정렬 한 후에, 구해야 되는 target 숫자를 차례차례 체크하는 방식으로 이루어져 있다. 예를 들어 data.. 2021. 10. 3.
[그리디] 문자열 뒤집기 S 문자열은 0과 1로만 이루어져 있다. S 문자열에 있는 모든 숫자를 전부 같게 만드려고 한다. S 에서 연속된 하나 이상의 숫자를 잡고 뒤집을 수 있다. 뒤집는 것은 1을 0으로, 0을 1로 바꾸는것을 의미한다. 예를 들어 S 가 00011000 일때 모두 같게 하려면, 모두 1로 만들거나 모두 0으로 만들어야 한다. 먼저 모두 1로 만든다면 전체를 뒤집으면 1110011이 되고 그 후 4,5번째 문자를 뒤집으면 1111111 이 되어서 두번만에 모두 같은 숫자로 만들 수 있다. 다음 모두 0으로 만든다면 4,5번째 문자를 뒤집으면 00000000 이 되어서 한번만에 모두 같은 숫자로 만들 수 있고 정답은 1이 된다. 이 문제를 보고 처음 고민한 내용들이다. 복기를 위해 잘못된 생각도 그대로 적었다... 2021. 9. 26.