Algorithm/BOJ
-
https://www.acmicpc.net/problem/9205 9205번: 맥주 마시면서 걸어가기 송도에 사는 상근이와 친구들은 송도에서 열리는 펜타포트 락 페스티벌에 가려고 한다. 올해는 맥주를 마시면서 걸어가기로 했다. 출발은 상근이네 집에서 하고, 맥주 한 박스를 들고 출발한다. www.acmicpc.net 9205, 맥주 마시면서 걸어가기 📌 [ 난이도 : 골드 5 ] 난이도가 올라갈수록 문제를 이해하는데 걸리는 시간이 오래 걸리는 것 같다. 정리하자면 N+2 개 줄에 상근이네 집, 편의점, 펜타포트 락 페스티벌 좌표가 각각 주어지는데 50M 가기 전에 맥주 한병을 마셔야 하고 맥주 한 박스에는 맥주 20개가 들어있기 때문에 좌표간의 거리가 1000M (50M당 맥주 1개, 20개 보유) 면 ..
(JAVA) [BOJ]백준 9205번, 맥주 마시면서 걸어가기https://www.acmicpc.net/problem/9205 9205번: 맥주 마시면서 걸어가기 송도에 사는 상근이와 친구들은 송도에서 열리는 펜타포트 락 페스티벌에 가려고 한다. 올해는 맥주를 마시면서 걸어가기로 했다. 출발은 상근이네 집에서 하고, 맥주 한 박스를 들고 출발한다. www.acmicpc.net 9205, 맥주 마시면서 걸어가기 📌 [ 난이도 : 골드 5 ] 난이도가 올라갈수록 문제를 이해하는데 걸리는 시간이 오래 걸리는 것 같다. 정리하자면 N+2 개 줄에 상근이네 집, 편의점, 펜타포트 락 페스티벌 좌표가 각각 주어지는데 50M 가기 전에 맥주 한병을 마셔야 하고 맥주 한 박스에는 맥주 20개가 들어있기 때문에 좌표간의 거리가 1000M (50M당 맥주 1개, 20개 보유) 면 ..
2023.08.16 -
https://www.acmicpc.net/problem/1707 1707번: 이분 그래프 입력은 여러 개의 테스트 케이스로 구성되어 있는데, 첫째 줄에 테스트 케이스의 개수 K가 주어진다. 각 테스트 케이스의 첫째 줄에는 그래프의 정점의 개수 V와 간선의 개수 E가 빈 칸을 사이에 www.acmicpc.net 1707, 이분 그래프 📌 [ 난이도 : 골드 4 ] 이번 문제는 그래프 이론과 BFS 를 사용한 풀이이다. 풀이에 들어가기 이전에 이분 그래프에 대한 이해가 어려워 시간이 오래걸렸다. 이분 그래프는 요약해서 말하자며 어떤 한 정점에서 연결된 모든 정점이 다른 값을 가져야 한다는 의미이다. 더 자세한 내용은 풀이에서 이어서 설명하겠다. - 📚 Process 초기화 및 선언 : 테스트 케이스 T와..
(JAVA) [BOJ]백준 1707번, 이분 그래프https://www.acmicpc.net/problem/1707 1707번: 이분 그래프 입력은 여러 개의 테스트 케이스로 구성되어 있는데, 첫째 줄에 테스트 케이스의 개수 K가 주어진다. 각 테스트 케이스의 첫째 줄에는 그래프의 정점의 개수 V와 간선의 개수 E가 빈 칸을 사이에 www.acmicpc.net 1707, 이분 그래프 📌 [ 난이도 : 골드 4 ] 이번 문제는 그래프 이론과 BFS 를 사용한 풀이이다. 풀이에 들어가기 이전에 이분 그래프에 대한 이해가 어려워 시간이 오래걸렸다. 이분 그래프는 요약해서 말하자며 어떤 한 정점에서 연결된 모든 정점이 다른 값을 가져야 한다는 의미이다. 더 자세한 내용은 풀이에서 이어서 설명하겠다. - 📚 Process 초기화 및 선언 : 테스트 케이스 T와..
2023.08.15 -
https://www.acmicpc.net/problem/14503 14503번: 로봇 청소기 첫째 줄에 방의 크기 $N$과 $M$이 입력된다. $(3 \le N, M \le 50)$ 둘째 줄에 처음에 로봇 청소기가 있는 칸의 좌표 $(r, c)$와 처음에 로봇 청소기가 바라보는 방향 $d$가 입력된다. $d$가 $0$인 경우 북쪽 www.acmicpc.net 14503, 로봇 청소기 📌 [ 난이도 : 골드 5 ] 이번 문제는 DFS 로 풀이를 진행했다. 문제 읽고 이해하는데만 한 세월 걸린 문제 ! 📚 Process 초기화 및 선언 : 청소할 구역에 대한 범위를 입력받고 시작 좌표와 방향을 받는다. 방향이 중요하기 때문에 dir 도 신경써서 선언해주어야 한다. static BufferedReader b..
(JAVA) [BOJ]백준 14503번, 로봇 청소기https://www.acmicpc.net/problem/14503 14503번: 로봇 청소기 첫째 줄에 방의 크기 $N$과 $M$이 입력된다. $(3 \le N, M \le 50)$ 둘째 줄에 처음에 로봇 청소기가 있는 칸의 좌표 $(r, c)$와 처음에 로봇 청소기가 바라보는 방향 $d$가 입력된다. $d$가 $0$인 경우 북쪽 www.acmicpc.net 14503, 로봇 청소기 📌 [ 난이도 : 골드 5 ] 이번 문제는 DFS 로 풀이를 진행했다. 문제 읽고 이해하는데만 한 세월 걸린 문제 ! 📚 Process 초기화 및 선언 : 청소할 구역에 대한 범위를 입력받고 시작 좌표와 방향을 받는다. 방향이 중요하기 때문에 dir 도 신경써서 선언해주어야 한다. static BufferedReader b..
2023.08.15 -
https://www.acmicpc.net/problem/1743 1743번: 음식물 피하기 첫째 줄에 통로의 세로 길이 N(1 ≤ N ≤ 100)과 가로 길이 M(1 ≤ M ≤ 100) 그리고 음식물 쓰레기의 개수 K(1 ≤ K ≤ N×M)이 주어진다. 그리고 다음 K개의 줄에 음식물이 떨어진 좌표 (r, c)가 주어진다 www.acmicpc.net 1743, 음식물 피하기 📌 [ 난이도 : 실버 1 ] 이번 문제는 DFS & BFS 를 사용해서 풀이했다. 두 방식에 시간과 메모리 차이는 크게 없는 거 같지만 가장 중요한 개념이라고 생각하기에 항상 두 방식으로 풀어보길 권장한다. 📚 Process 초기화 및 선언 : 항상 배열을 만들어 줄 때 x, y에 대한 구분이 헷갈리는데 명확하게 하지 않으면 in..
(JAVA) [BOJ]백준 1743번, 음식물 피하기https://www.acmicpc.net/problem/1743 1743번: 음식물 피하기 첫째 줄에 통로의 세로 길이 N(1 ≤ N ≤ 100)과 가로 길이 M(1 ≤ M ≤ 100) 그리고 음식물 쓰레기의 개수 K(1 ≤ K ≤ N×M)이 주어진다. 그리고 다음 K개의 줄에 음식물이 떨어진 좌표 (r, c)가 주어진다 www.acmicpc.net 1743, 음식물 피하기 📌 [ 난이도 : 실버 1 ] 이번 문제는 DFS & BFS 를 사용해서 풀이했다. 두 방식에 시간과 메모리 차이는 크게 없는 거 같지만 가장 중요한 개념이라고 생각하기에 항상 두 방식으로 풀어보길 권장한다. 📚 Process 초기화 및 선언 : 항상 배열을 만들어 줄 때 x, y에 대한 구분이 헷갈리는데 명확하게 하지 않으면 in..
2023.08.14 -
https://www.acmicpc.net/problem/12919 12919, A 와 B 2 📌 [ 난이도 : 골드 5 ] 이번 문제는 문자열 문제이다 골드 문제 위주로 풀이해서 고득점을 노려보자고 마음먹고 푼 문제이기는 하지만 잘 푼 풀이인지는 잘 모르겠다. 더 효율적인 풀이를 위해 연구해봐야 할 것 같다. 📚 Process 초기화 및 선언 : 변화하기전 before, 변화한 후인 after 로 String 을 받아준다. public static void input() throws IOException { before = br.readLine(); after = br.readLine(); } 재귀호출 : 재귀로 문제를 풀이해보았다. 접근은 가공이 된 문자열에서 2가지 조건을 반대로 하며 before와..
(JAVA) [BOJ]백준 12919번, A 와 B 2https://www.acmicpc.net/problem/12919 12919, A 와 B 2 📌 [ 난이도 : 골드 5 ] 이번 문제는 문자열 문제이다 골드 문제 위주로 풀이해서 고득점을 노려보자고 마음먹고 푼 문제이기는 하지만 잘 푼 풀이인지는 잘 모르겠다. 더 효율적인 풀이를 위해 연구해봐야 할 것 같다. 📚 Process 초기화 및 선언 : 변화하기전 before, 변화한 후인 after 로 String 을 받아준다. public static void input() throws IOException { before = br.readLine(); after = br.readLine(); } 재귀호출 : 재귀로 문제를 풀이해보았다. 접근은 가공이 된 문자열에서 2가지 조건을 반대로 하며 before와..
2023.08.07 -
https://www.acmicpc.net/problem/11659 11659번: 구간 합 구하기 4 첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j www.acmicpc.net 11659, 구간 합 구하기 4 [ 난이도 : 실버 3 ] 이번 문제는 누적합을 사용해서 풀어보겠다. N과 M의 범위가 1 - 100,000 이다. 이번 문제에선 i, j 를 for문을 통해서 구하게 되면 시간 초과가 발생할 수 있기 때문에 누적합을 통해 풀어보겠다. 예를 들어 i, j 가 각각 2 와 3으로 주어지고 arr이라는 int 배열에 누적합을 구한다는 가정을 해보..
(JAVA) [BOJ]백준 11659번, 구간 합 구하기 4https://www.acmicpc.net/problem/11659 11659번: 구간 합 구하기 4 첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j www.acmicpc.net 11659, 구간 합 구하기 4 [ 난이도 : 실버 3 ] 이번 문제는 누적합을 사용해서 풀어보겠다. N과 M의 범위가 1 - 100,000 이다. 이번 문제에선 i, j 를 for문을 통해서 구하게 되면 시간 초과가 발생할 수 있기 때문에 누적합을 통해 풀어보겠다. 예를 들어 i, j 가 각각 2 와 3으로 주어지고 arr이라는 int 배열에 누적합을 구한다는 가정을 해보..
2023.06.14 -
https://www.acmicpc.net/problem/4949 4949번: 균형잡힌 세상 각 문자열은 마지막 글자를 제외하고 영문 알파벳, 공백, 소괄호("( )"), 대괄호("[ ]")로 이루어져 있으며, 온점(".")으로 끝나고, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마지막에 www.acmicpc.net 4949, 균형잡힌 세상 [ 난이도 : 실버 4 ] 이번 문제는 스택을 사용해서 풀어보겠다. # Process input : 입력받은 String 이 "." 이 아닐 때까지 입력을 받고 solve 라는 메서드를 통해 답을 도출한다. static String str; static void input() { while(true) { str = scan.nextLine(); if(..
(JAVA) [BOJ]백준 4949번, 균형잡힌 세상https://www.acmicpc.net/problem/4949 4949번: 균형잡힌 세상 각 문자열은 마지막 글자를 제외하고 영문 알파벳, 공백, 소괄호("( )"), 대괄호("[ ]")로 이루어져 있으며, 온점(".")으로 끝나고, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마지막에 www.acmicpc.net 4949, 균형잡힌 세상 [ 난이도 : 실버 4 ] 이번 문제는 스택을 사용해서 풀어보겠다. # Process input : 입력받은 String 이 "." 이 아닐 때까지 입력을 받고 solve 라는 메서드를 통해 답을 도출한다. static String str; static void input() { while(true) { str = scan.nextLine(); if(..
2023.06.13 -
https://www.acmicpc.net/problem/1158 1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net 1158, 요세푸스 문제 [ 난이도 : 실버 4 ] 이번 문제는 큐를 사용해서 풀어보겠다. # Process input : N 과 M 을 입력받고, N만큼의 수를 큐에 넣어준다. static int N, M; static Queue Q = new LinkedList(); static void input() { N = scan.nextInt(); M = scan.nextInt(); for(int i=1; i
(JAVA) [BOJ]백준 1158번, 요세푸스 문제https://www.acmicpc.net/problem/1158 1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net 1158, 요세푸스 문제 [ 난이도 : 실버 4 ] 이번 문제는 큐를 사용해서 풀어보겠다. # Process input : N 과 M 을 입력받고, N만큼의 수를 큐에 넣어준다. static int N, M; static Queue Q = new LinkedList(); static void input() { N = scan.nextInt(); M = scan.nextInt(); for(int i=1; i
2023.06.11