= 내가 접급한 방법 = Map을 이용해서 접근했다. 1. 상근이가 갖고 있는 카드를 Map으로 이렇게 저장 2. 주어진 카드를 새로운 Map으로 이렇게 저장 (result) ( 순서 유지를 위해 LinkedHashMap을 이용 ) 3. card에 있는 key값을 for문을 이용해서 뿌려줄 때, contains메서드를 이용해서 result에 그 key값이 존재한다면 로 수정을 했다. 그리고 결과를 그대로 출력해주면 됨. = 이분 탐색을 이용한 방법 = 이 문제의 핵심은 이분 탐색 알고리즘을 활용할 수 있냐 없냐 문제였다. 시간 복잡도를 logN으로 할 수 있는 최적의 탐색 방법이다. 정렬된 배열을 탐색하는 것인데, 반을 쪼개고 반을 쪼개고 반을 쪼개서 찾는 방식이다. 1 ~ 10까지의 값이 존재하면 1 ..
= 내가 접근한 방법 = 되게 바보같이 생각했던 것 같다. 일단 4중 for문을 사용한다는 것부터... 이 문제는 쉬운 문제인데 내가 생각이 너무 많고 올바른 방향을 못 잡는게 너무 많다. lines는 일단 [0, 1],[2, 5], [3,9] 이렇게 주어지는 것을 기준으로 생각했다. 그냥 겹치는 것만 생각하면 되는데 0~1일 때, 2~5와 겹치는 부분 / 3~9와 겹치는 부분 이런 세세한 거 다 생각했다. 그리고 나온 경우의 수를 생각해서 풀었는데 완전 잘못된 방향이였다.. = 다른 사람의 풀이 = https://www.youtube.com/watch?v=aLYKp3OTh2Q&lc=UgwFhCq6s9tEk1dJ0QN4AaABAg.9jXGSjgpl4I9jXVQ-GKbB6 이 링크를 참고했으니까 매우 자세..
이 문제를 해결하는 과정에서 오답을 낸 것이 아니라, 그냥 문제 자체를 이해하지 못했다. 첫번째는 666, 두번째는 1666 6번째는 5666인데 왜 7번째는 6660인가? 이 것을 해결하지 못했는데 되게 간단한 문제였다. 666이 무조건 포함이 되어야 한다. 따라서 5666 다음엔 6666이 오면 6660보다 더 큰 값이 오니까 말이 안 되는 거다. 7번째로 작은 값은 6660이 와야지 6666이 오면 나머지 6660, 6661, 6662 이 값들은 다 버려지기 때문이다. = 내 풀이 = 1부터 int의 최댓값까지 반복을 하면서 666이 포함되어있는 값들을 순서대로 list에 담았다. 그리고 list의 사이즈가 10000까지 저장이 되어야 내가 원하는 값을 쏙 뽑아서 쓸 수 있기 때문에 이러한 식을 이..
= 내가 접근한 방법 ( 틀림 ) = 1. input 받기 2. 겹치는 색종이가 있으면 그 색종이는 총 넓이에서 제외한다. ex) 3장의 색종이가 있으면 검은색을 차지하고 있는 최종 넓이는 100이다. 3. 겹친 색종이 구하기를 구하기 3-1. 먼저 x축이 겹치는 상태를 먼저 확인한다. 3-2. x축이 겹치는 색종이들만 따로 y축도 겹치는지 확인한다. 3-3. 그리고 최종 넓이에서 겹친 넓이를 빼준다. 이게 내가 한 방법이다. 코드로 한 번 보자. 1. 2차원배열에 x축과 y축을 다 저장했다. 2. 겹치는 색종이를 먼저 확인한다. 컬렉션 Set을 이용했다. Set을 이용했다. 내가 이차원 배열을 이용해서 x축 y축을 저장했기 때문에 String으로 변환시켜준 후, 총 넓이를 구했다. 3. 어떤 색종이들이..
= 내가 접근한 방법 ( 틀림 ) = 문제 의도 자체를 잘못 파악했다. 내가 이해한 내용은 8x8체스판에서 B와 W의 개수를 구한 후, 제일 최소로 각자 32개씩 나올 수 있는 방법을 찾았다. 그래서 틀렸다 이 문제는 8x8 배열에서 W,B가 교차하면서 완벽하게 체스판을 만들어야 할 때 필요한 W,B의 갯수지 8x8체스판에서 B와 W의 개수를 구한 후 , 완전하게 새로 칠한다는 문제가 아니였다. 이 방법을 엄청 고민하면서 풀었는데 틀렸고, 더이상 해결 방법을 찾지 못해 구글링을했다. = 다른 사람 풀이 = 정말 간단하게 풀 수 있었다. 0. 맨 처음 배열을 생성해서 1차원 배열로 BBBBBBBB, WWWWWWWW 이런식으로 row값에 맞게 저장한다. 1. 체스판을 자른다. 8x8의 모든 경우의 수를 생각..
= 내가 푼 방법 ( 틀림 ) = 이렇게 복잡하게 풀어도 틀렸다. 내가 접근한 방법은 1. 두 분수를 비교해서 분모가 더 큰 곳을 찾는다. 1-1. 분모가 같을 경우 그냥 분자끼리 더하고 출력 2. 분모가 작은 쪽을 더 큰 분모에 맞춘다 ( 통분 ) 2-2. 만약 하나의 분모로 통분이 안 된다면 분모 각각 곱하는 식으로 통분 3. 그렇게해서 값을 출력 => 오답, 약분을 안 해준 것도 오답의 원인 중 하나 정확하게 어떤 부분에서 틀렸는지 모르겠다. 이러한 복잡한 방식으로 해결하면 안 될 것 같다. 모든 경우의 수를 다 생각해서 값을 구하는 거는 정답을 맞출 순 있어도 너무 비효율적이다. = 다른 풀이 = 1 / 2 값과 3 / 4 값을 그냥 더하면 어떻게 구할 수 있을까? denum1 = 1, num1 ..