[Java] 백준 1987 : 알파벳 알파벳 적힌 칸을 한 번씩만 지나서 최대한 몇 칸을 움직일 수 있는가를 구현한다. DFS로 구현할 경우, 각각의 루트에 대해서 지나갈 수 있는 값들 중 최댓값을 출력할 수 있도록 해야한다. 특정 루트에 대한 탐색이 끝나면 다음 루트에 대한 탐색도 온전하게 진행되어야 하므로, dfs의 재귀가 끝날 때 해당 알파벳에 대한 방문 처리를 초기화 해주어야 한다. 방문 처리를 초기화 해주지 않으면 다음 루트에 대한 탐색에 문제가 생기기 때문이다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; publ..
[Java] 백준 2667 : 단지번호붙이기 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net 입력해야하는 값이 아래와 같이 주어진다. 7 0110100 0110101 1110101 0000111 0100000 0111110 0111000 첫째줄은 지도의 크기 N이며, 그 다음 N줄에는 N개의 자료가 입력된다. 위의 정보를 토대로 NxN 크기의 map을 먼저 만들어야 한다. 각 행마다 하나의 문자열을 받는다고 가정하면, 0번 행에는 '0110100'이라는 문자열을 분리하여 각각의 행에 정수로 치환한 값을 할당해야..
[Java] 백준 2504 : 괄호의 값 난이도 🥈실버1 https://www.acmicpc.net/problem/2504 2504번: 괄호의 값 4개의 기호 ‘(’, ‘)’, ‘[’, ‘]’를 이용해서 만들어지는 괄호열 중에서 올바른 괄호열이란 다음과 같이 정의된다. 한 쌍의 괄호로만 이루어진 ‘()’와 ‘[]’는 올바른 괄호열이다. 만일 X www.acmicpc.net ‘()’ 인 괄호열의 값은 2이다. ‘[]’ 인 괄호열의 값은 3이다. ‘(X)’ 의 괄호값은 2×값(X) 으로 계산된다. ‘[X]’ 의 괄호값은 3×값(X) 으로 계산된다. 올바른 괄호열 X와 Y가 결합된 XY의 괄호값은 값(XY)= 값(X)+값(Y) 로 계산된다. 접근1 (()[[]])([]) (()[[]]) -> 2*(2 + (3..
자바 코테용 문법 정리 라이브러리 땡겨오기 import java.util.*; import java.io.*; 배열 선언 String[] arr1 = new String[5]; int[] arr2 = {1, 2, 3}; int N = 3; int[] arr3 = new int[N]; Arrays int arr[] = {10, 8, 11, 2, 3, 0}; // 오름차순 {0, 2, 3, 8, 10 ,11} Arrays.sort(arr); // 내림차순 {11, 10 , 8, 3, 2, 0} Arrays.sort(arr, Collections.reverseOrder()); // int 타입 배열 내림차순(Integer로 변경 필요) Integer arr2[] = Arrays.stream(arr).boxed..
[C++] 백준 1931: 회의실 배정 🥈 실버 1 https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 접근 이미 진행중인 회의가 있다면, 다음 회의로 현재 회의가 끝나는 시간과 가장 가까운 회의가 선택되어야 최댓값을 가질 수 있다. 반복문을 한번만 돌려서 이를 효과적으로 구현하기 위해서는 입력된 값을 어떤 기준을 삼아 정렬시킬 필요가 있다. 위의 예제 입력 케이스를 참고하여 x축을 회의 시간으로 해서 나타내면 아래와 같다. 예제에서 입력 값들을 어떻게 정렬해야 할지에 대한 힌트를 주고 있었다. 회의가 끝나는 시간을 기준으로 입력받은 pair의 값을 정렬하면 된다..
[C++] 백준 16953: A -> B 🥈실버 2 https://www.acmicpc.net/problem/16953 16953번: A → B 첫째 줄에 A, B (1 ≤ A 81 -> 8 -> 4 -> 2와 같이 흘러간다. 이렇게 보면 규칙을 쉽게 찾을 수 있다. 1. B가 2로 나눠지는 경우 2로 나누고 count++ 2. B가 2로 안나눠지는데 맨 오른쪽에 1이 있으면 1지우고 count++ 3. B가 2로 안나눠지는데 맨 오른쪽에 1도 없으면 그냥 안되는 거라서 -1 출력 후 프로그램 종료 예제 케이스 4..