💡Problem Solving 182

[BOJ 1992] 쿼드트리 (Java)

문제 https://www.acmicpc.net/problem/1992 1992번: 쿼드트리 첫째 줄에는 영상의 크기를 나타내는 숫자 N 이 주어진다. N 은 언제나 2의 제곱수로 주어지며, 1 ≤ N ≤ 64의 범위를 가진다. 두 번째 줄부터는 길이 N의 문자열이 N개 들어온다. 각 문자열은 0 또 www.acmicpc.net 풀이 분할정복으로 푼다. 왼쪽 위, 오른쪽 위, 왼쪽 아래, 오른쪽 아래 사분면 순으로 재귀함수를 호출하면서 모든 숫자가 1이면 1 출력, 0이면 0 출력. 이외의 케이스는 좌표와 크기를 갱신하여 다시 재귀를 돌려주면 된다. 2021.11.16 - [Problem Solving/BOJ] - [BOJ 2630] 색종이 만들기 (Java) [BOJ 2630] 색종이 만들기 (Java..

[BOJ 2630] 색종이 만들기 (Java)

문제 https://www.acmicpc.net/problem/2630 2630번: 색종이 만들기 첫째 줄에는 전체 종이의 한 변의 길이 N이 주어져 있다. N은 2, 4, 8, 16, 32, 64, 128 중 하나이다. 색종이의 각 가로줄의 정사각형칸들의 색이 윗줄부터 차례로 둘째 줄부터 마지막 줄까지 주어진다. www.acmicpc.net 풀이 분할 정복 문제, 재귀용법을 이용하여 푼다. 소스코드 package dp; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; public class BOJ2630 { public static int oneCnt, zeroCnt; pub..

[BOJ 5430] AC (Java)

문제 https://www.acmicpc.net/problem/5430 5430번: AC 각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다. www.acmicpc.net 풀이 Deque 문제로 R명령어가 들어왔을 때 값이 들어가는 입구를 바꿔주면 된다. (First, Last) First를 입구로 사용한다면 나중에 값을 뽑을 땐 Last로 뽑아야 생각한 순서대로 값이 출력된다. (반대도 마찬가지) 이 부분이 처음에 헷갈려서 LinkedList 메소드를 테스트하면서 정리해보았다. 2021.11.15 - [Java] - [Java] Deque 자료 구조 (LinkedList 메소드) [Java] Deque 자료 구조 ..

[BOJ 1021] 회전하는 큐 (Java)

문제 https://www.acmicpc.net/problem/1021 1021번: 회전하는 큐 첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가 www.acmicpc.net 풀이 어렵지 않은 문제이다. deque를 이용해서 풀면 된다. 중간 값을 찾아서 현재 수가 왼쪽에 있는지 오른쪽에 있는지 판단하는 부분에서 많이 헷갈렸다. index 경계값 처리 하는게 머릿속으로 바로바로 안된다. 소스코드는 아래와 같다. 소스코드 package queue; import java.io.BufferedReader; import java.io.InputStreamReader;..

[BOJ 18258] 큐 2 (Java)

문제 https://www.acmicpc.net/problem/18258 18258번: 큐 2 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 2,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 풀이 Deque 구현체로 풀었다. 소스코드 package queue; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.ArrayDeque; import ..

[프로그래머스] 키패드 누르기 (Java)

문제 https://programmers.co.kr/learn/courses/30/lessons/67256 코딩테스트 연습 - 키패드 누르기 [1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL" [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR" [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] "right" "LLRLLRLLRL" programmers.co.kr 풀이 단순 구현 문제로 키패드 좌표를 2차 배열로 만들어 놓고 시작한다. 첫번째 열은 왼쪽, 마지막 열은 오른쪽 손을 사용하며 중간 열은 왼손, 오른손의 현재 위치와 누를 숫자의 위치 간 거리를 계산하여 거리가 짧은 손으로 키패드를 누른다. 거리가..

[BOJ 4949] 균형잡힌 세상 (Java)

문제 https://www.acmicpc.net/problem/4949 4949번: 균형잡힌 세상 하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마 www.acmicpc.net So when I die (the [first] I will see in (heaven) is a score list). [ first in ] ( first out ). Half Moon tonight (At least it is better than no Moon at all]. A rope may form )( a trail in a maze. Help( I[m being..

[BOJ 9012] 괄호 (Java)

문제 https://www.acmicpc.net/problem/9012 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net 풀이 Stack의 대표문제 '(' 는 Stack에 넣고, ')' 가 나오면 Stack top이 '(' 일 경우 top을 pop한다. 모든 순회가 끝난 후 Stack이 비어있다면 올바른 괄호이다. 아래 문제와 유사하다. 2021.10.18 - [Problem Solving/Programmers] - [프로그래머스] 올바른 괄호 (Java) [프로그래머스] 올바른 ..

[BOJ 17298] 오큰수 (Java)

문제 https://www.acmicpc.net/problem/17298 17298번: 오큰수 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다. www.acmicpc.net 풀이 Stack을 이용 풀었다. 뒤에서부터 순회하며 Stack에 넣을건데 먼저 Stack의 top을 체크하면서 현재 원소보다 작으면 pop을 해준다. (현재 원소 보다 큰 값이 나올때까지) 이후 Stack이 empty 상태라면 현재 원소보다 큰 수가 없는 것이므로 -1을 저장 Stack의 사이즈가 1이상이라면 Stack의 top이 현재 원소의 오큰수이므로 저장한다. 마지막으로 현재 원소를 Stack에 ..

[BOJ 1956] 운동 (Java)

문제 https://www.acmicpc.net/problem/1956 1956번: 운동 첫째 줄에 V와 E가 빈칸을 사이에 두고 주어진다. (2 ≤ V ≤ 400, 0 ≤ E ≤ V(V-1)) 다음 E개의 줄에는 각각 세 개의 정수 a, b, c가 주어진다. a번 마을에서 b번 마을로 가는 거리가 c인 도로가 있다는 의 www.acmicpc.net 풀이 아래 문제랑 비슷한데, 해당 문제는 플로이드 와샬 알고리즘을 이용해 푸는게 가능하다. 2021.10.31 - [Problem Solving/Programmers] - [프로그래머스] 합승 택시 요금 (Java) [프로그래머스] 합승 택시 요금 (Java) 문제 https://programmers.co.kr/learn/courses/30/lessons/7..