백준 오답노트

백준 오답노트/집합과 맵

백준 - 집합과 맵 10816번 숫자 카드2 / 이분 탐색을 활용 ( 중복값 )

= 내가 접근한 방법 = 숫자 카드1 문제랑 똑같이 접근했다. Map을 이용해서 Map의 메서드 getOrDefault를 활용하는 방식으로 해결했는데 이 문제도 이분 탐색을 이용해서 풀어야 되는 문제였다. 지난 숫자 카드1보다는 조금 더 간결하게 코드를 짜긴 했지만, 결국 이분 탐색이 핵심이다. getOrDefault라는 메서드는 card라는 맵 안에 내가 입력한 값이 있으면 그 key의 밸류를 갖고오는 것이고 없으면 defaultValue ( 내가 지정한 값 ) 0을 넣는 메서드다. 이 메서드를 활용하면 이분 탐색을 안 하고 쉽게 해결할 수 있다. = 이분 탐색 = https://st-lab.tistory.com/267 이 블로그를 참고해서 공부했다. 나보다 훨씬 자세한 설명은 이 블로그에 있다. 간단..

백준 오답노트/집합과 맵

백준 - 집합과 맵 10815번 숫자 카드 / 이분 탐색을 활용

= 내가 접급한 방법 = Map을 이용해서 접근했다. 1. 상근이가 갖고 있는 카드를 Map으로 이렇게 저장 2. 주어진 카드를 새로운 Map으로 이렇게 저장 (result) ( 순서 유지를 위해 LinkedHashMap을 이용 ) 3. card에 있는 key값을 for문을 이용해서 뿌려줄 때, contains메서드를 이용해서 result에 그 key값이 존재한다면 로 수정을 했다. 그리고 결과를 그대로 출력해주면 됨. = 이분 탐색을 이용한 방법 = 이 문제의 핵심은 이분 탐색 알고리즘을 활용할 수 있냐 없냐 문제였다. 시간 복잡도를 logN으로 할 수 있는 최적의 탐색 방법이다. 정렬된 배열을 탐색하는 것인데, 반을 쪼개고 반을 쪼개고 반을 쪼개서 찾는 방식이다. 1 ~ 10까지의 값이 존재하면 1 ..

백준 오답노트/브루트포스

백준 - 브루트포스 1436번 영화감독 숌 / 문제를 이해 못 함.

이 문제를 해결하는 과정에서 오답을 낸 것이 아니라, 그냥 문제 자체를 이해하지 못했다. 첫번째는 666, 두번째는 1666 6번째는 5666인데 왜 7번째는 6660인가? 이 것을 해결하지 못했는데 되게 간단한 문제였다. 666이 무조건 포함이 되어야 한다. 따라서 5666 다음엔 6666이 오면 6660보다 더 큰 값이 오니까 말이 안 되는 거다. 7번째로 작은 값은 6660이 와야지 6666이 오면 나머지 6660, 6661, 6662 이 값들은 다 버려지기 때문이다. = 내 풀이 = 1부터 int의 최댓값까지 반복을 하면서 666이 포함되어있는 값들을 순서대로 list에 담았다. 그리고 list의 사이즈가 10000까지 저장이 되어야 내가 원하는 값을 쏙 뽑아서 쓸 수 있기 때문에 이러한 식을 이..

백준 오답노트/2차원배열

백준 - 2차원배열 2563번 색종이 / 구글링 후 오답

= 내가 접근한 방법 ( 틀림 ) = 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. 어떤 색종이들이..

백준 오답노트/브루트포스

백준 - 브루트포스 1018번 체스판 다시 칠하기 / 강의로 해결

= 내가 접근한 방법 ( 틀림 ) = 문제 의도 자체를 잘못 파악했다. 내가 이해한 내용은 8x8체스판에서 B와 W의 개수를 구한 후, 제일 최소로 각자 32개씩 나올 수 있는 방법을 찾았다. 그래서 틀렸다 이 문제는 8x8 배열에서 W,B가 교차하면서 완벽하게 체스판을 만들어야 할 때 필요한 W,B의 갯수지 8x8체스판에서 B와 W의 개수를 구한 후 , 완전하게 새로 칠한다는 문제가 아니였다. 이 방법을 엄청 고민하면서 풀었는데 틀렸고, 더이상 해결 방법을 찾지 못해 구글링을했다. = 다른 사람 풀이 = 정말 간단하게 풀 수 있었다. 0. 맨 처음 배열을 생성해서 1차원 배열로 BBBBBBBB, WWWWWWWW 이런식으로 row값에 맞게 저장한다. 1. 체스판을 자른다. 8x8의 모든 경우의 수를 생각..

백준 오답노트/브루트포스

백준 - 브루트포스 2231번 분해합 / 백준 질문글로 해결

문제 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 된다. 따라서 245는 256의 생성자가 된다. 물론, 어떤 자연수의 경우에는 생성자가 없을 수도 있다. 반대로, 생성자가 여러 개인 자연수도 있을 수 있다. 자연수 N이 주어졌을 때, N의 가장 작은 생성자를 구해내는 프로그램을 작성하시오. 입력 첫째 줄에 자연수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 출력 첫째 줄에 답을 출력한다. 생성자가 없는 경우에는 0을 출력한다. 예제 입력 1 복사 216 예제 출력 1 복사 198 = 오답 코드 = 처음에 내 코드에 오..

초보병일이
'백준 오답노트' 카테고리의 글 목록 (5 Page)