본문 바로가기

java42

백준 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.
백준 1269 대칭 차집합 자바 java 대칭 차집합을 구하는 문제이다. 문제에서 요구하는 것은 두 개의 집합 A, B가 있다고 할 때 A, B에 공통적으로 들어가는 값을 제외한 A, B의 값의 개수의 합을 구하는 것이다. 즉 겹치는 값의 개수를 구하면 간단하다. 해당 값이 존재하는지 알아보기 위해서는 contain함수를 활용하면 좋을 것 같다.\ 우선 HashMap을 사용하여 풀어 보았다. import java.util.*; import java.io.BufferedReader; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReade.. 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.
백준 10816 숫자카드2 자바 java 이번 문제의 어려웠던 점은 HashMap의 키는 중복된 값을 허용하지 않는다는 점이다. 따라서 HashMap에 바로 값을 넣을수는 없다. 그렇다면 HashMap의 특성을 이용하여 중복되는 수를 세보자. HashMap는 중복된 키가 입력되면 오류가 나는 것이 아닌 해당 키가 업데이트된다. 만약 (A, 10)이 있었다면 (A, 5)가 들어오면 (A, 5)로 해당 value가 업데이트된다. 그렇다면 동일한 키가 들어올 때 마다 기존 value에 + 1을 하면 중복된 키의 개수를 셀 수 있을 것이다. 이 특성을 바탕으로 코드를 작성해 보자. import java.util.*; import java.io.BufferedReader; import java.io.InputStreamReader; public clas.. 2024. 1. 23.
백준 1620 나는야 포켓몬 마스터 이다솜 자바 java 이 문제는 앞서 본 문제와 비슷하게 HashMap를 사용하여 풀지만, 특이점이 있다. 이 문제는 key값을 통해 value값을 조회하기도 하고, value값을 통해 key 값을 조회하기도 한다. 하지만 HashMap는 value값을 통해 key값을 조회하는 것을 지원하지는 않는다. 이 경우 두 개의 HashMap를 사용함으로써 우리는 간단하게 해결할 수 있다. import java.util.*; import java.io.BufferedReader; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new Buffered.. 2024. 1. 23.
백준 7785 자바 회사에 있는 사람 java 역순으로 정렬하는 것이 중요한 문제이다. 컬랙션을 사용하여 HashMap를 정렬하는 방법을 알아보았다. TreeMap라는 컬랙션을 이용하면 된다. import java.util.*; import java.io.BufferedReader; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.readLine()); //N개를 입력받음 HashMap map = new HashMap().. 2024. 1. 23.