= 내가 접근한 방법 = import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class Main { public static void main(String[] args) throws IOException { // 1. input BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new StringBuilder(); StringTokenizer st = new StringTokenizer(br.readLine()); int n = ..
= 내가 접근한 방법 = 숫자 카드1 문제랑 똑같이 접근했다. Map을 이용해서 Map의 메서드 getOrDefault를 활용하는 방식으로 해결했는데 이 문제도 이분 탐색을 이용해서 풀어야 되는 문제였다. 지난 숫자 카드1보다는 조금 더 간결하게 코드를 짜긴 했지만, 결국 이분 탐색이 핵심이다. getOrDefault라는 메서드는 card라는 맵 안에 내가 입력한 값이 있으면 그 key의 밸류를 갖고오는 것이고 없으면 defaultValue ( 내가 지정한 값 ) 0을 넣는 메서드다. 이 메서드를 활용하면 이분 탐색을 안 하고 쉽게 해결할 수 있다. = 이분 탐색 = https://st-lab.tistory.com/267 이 블로그를 참고해서 공부했다. 나보다 훨씬 자세한 설명은 이 블로그에 있다. 간단..
= 내가 접급한 방법 = 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. 어떤 색종이들이..