본문 바로가기

알고리즘2

백준 11478 서로 다른 부분 문자열의 개수 간단한듯 어려운 문제였다. 하지만 한 메소드를 안다면 간단하게 해결할 수 있다. 우선 부분 문자열을 구하는 방법을 알아보자. 만약 abcde가 입력된다면 a b c d e ab bc cd de abc bcd cde abcd bcde abcde 이런식으로 나온다. 저 순서대로 출력하는 것은 반복문으로 처리하기에는 복잡하다. 반복문을 통해 해결하기에는 출력을 시작하는 자리가 지속적으로 변해 출력하기가 매우 까다롭다. 그렇다면 다른 규칙을 가지고 출력해보는 것을 생각해본다. 출력을 시작하는 자리를 고정해 본다. a ab abc abcd abcde b bc bcd bcde c cd cde d de e 위와 같은 방식을 사용해도 모든 경우의 수가 나오는 것을 알 수 있다. 이제 조금 감이 잡히기 시작할 것이다. .. 2024. 1. 24.
백준 1764 듣보잡 자바 java 문제를 읽어본 처음 N. M을 입력받는데 반해 N번째 까지 듣도 못한사람, N + 2번째까지 보도 못한사람을 입력받으라고해 혼란이 있었다. 하지만 이 의미는 결국 첫 번째 줄은 N, M을 입력받으므로 N번만큼 듣도 못한사람을, 이후 M번 보도 못한사람을 입력받으라는 의미였다. 왜 이렇게 쓴건지는 잘 모르겠다. 듣도 못한사람, 보도못한사람 2가지 조건을 충족해야하기에, 입력받을 때 마다 value를 + 1 하는 방법을 선택했다. 즉 듣도 보도 못한사람은 value값이 2일 것이다. 듣도 보도 못한사람이 몇 명인지도 출력해야 하므로 보도 못한사람을 입력받을 때 count에 몇명인지 저장한다. TreeMap를 사용하여 사전순으로 정렬한다. for-each문과 keySet를 적절히 사용하여 듣도 보도 못한 사람.. 2024. 1. 24.