본문 바로가기

전체 글1271

[백준] 1285 동전 뒤집기 - Greedy / Java • 문제 링크 1285번: 동전 뒤집기 첫째 줄에 20이하의 자연수 N이 주어진다. 둘째 줄부터 N줄에 걸쳐 N개씩 동전들의 초기 상태가 주어진다. 각 줄에는 한 행에 놓인 N개의 동전의 상태가 왼쪽부터 차례대로 주어지는데, 앞면이 위 www.acmicpc.net • 풀이 과정 문제에 제시된 조건에 의하면 각 동전의 값은 대응되는 행 또는 열을 변환할 때 그 값이 결정된다. 해당 풀이에서는 n = 3, n * n 의 행렬에서의 행의 변환의 모든 경우의 수를 구하며 이를 1 ~ (1 2022. 7. 28.
[백준] 2138 전구와 스위치 - Greedy / Java • 문제 링크 2138번: 전구와 스위치 N개의 스위치와 N개의 전구가 있다. 각각의 전구는 켜져 있는 상태와 꺼져 있는 상태 중 하나의 상태를 가진다. i(1 < i < N)번 스위치를 누르면 i-1, i, i+1의 세 개의 전구의 상태가 바뀐다. 즉, 꺼져 www.acmicpc.net • 풀이 과정 n 개의 전구의 모든 값을 앞에서 부터 XOR 연산을 수행하여 모든 경우를 확인한다. 이때 1 ~ n 의 범위 내 i 번째 연산에 의해 i - 1 의 값이 최종적으로 결정되므로 두 배열의 i - 1 번째 값을 비교하며 0번째 연산의 수행 여부에 따라 1번째 연산의 수행 여부가 결정되므로 두 경우를 모두 수행한다. 재귀 함수의 깊이를 idx 변수, 연산의 횟수를 cnt 변수로 지정하고 input[idx - .. 2022. 7. 27.
[백준] 1080 행렬 - Greedy / Java • 문제 링크 1080번: 행렬 첫째 줄에 행렬의 크기 N M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 행렬 A가 주어지고, 그 다음줄부터 N개의 줄에는 행렬 B가 주어진다. www.acmicpc.net • 풀이 과정 두 행렬을 비교하여 특정 좌표에 다른 값이 존재할 경우 문제에 제시된 조건에 따라 해당 좌표가 (0, 0) 이 되는 3 * 3 크기의 부분 행렬을 모두 뒤집는다. 이때 전체 범위 중 부분 행렬을 뒤집을 때 배열의 범위를 벗어나지 않기 위해 n - 2 * m - 2 의 범위에서 해당 좌표의 값이 서로 다른지 탐색한다. 이때 값이 다를 경우 연산의 횟수를 의미하는 cnt++ 를 수행 및 해당 좌표를 (0, 0) 으로 지정하여 3 * 3 부분 행렬의 모.. 2022. 7. 26.
[백준] 7785 회사에 있는 사람 - Data Structure / Java • 문제 링크 7785번: 회사에 있는 사람 첫째 줄에 로그에 기록된 출입 기록의 수 n이 주어진다. (2 ≤ n ≤ 106) 다음 n개의 줄에는 출입 기록이 순서대로 주어지며, 각 사람의 이름이 주어지고 "enter"나 "leave"가 주어진다. "enter"인 경우는 www.acmicpc.net • 풀이 과정 문제에 제시된 조건 중 동명이인이 없음, 즉 중복을 허용하지 않으므로 Set 자료구조를 활용한다. 또는 Map 자료구조의 key 값으로 구현 가능하며 이때 Set 과 Map 은 List 대비 속도면에서 우위를 가진다. 입력받은 출입 기록 중 state 변수에 저장된 문자열이 "enter" 일때 Set 에 name 값을 저장하고 그 외의 경우는 state = "leave" 로써 Set 에 입력된 .. 2022. 7. 25.
[백준] 11279 최대 힙 - Data Structure / Java • 문제 링크 11279번: 최대 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 www.acmicpc.net • 풀이 과정 [백준] 1927 최소 힙 - Data Structure / Java • 문제 링크 1927번: 최소 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 graycode.tistory.com 위 문제와 전체적인 구조는 유사하나 해당 문제에선 최소값 대신 최대값을 우선 순위로 둔다. Pr.. 2022. 7. 24.
[백준] 1927 최소 힙 - Data Structure / Java • 문제 링크 1927번: 최소 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net • 풀이 과정 문제에 제시된 조건 중 배열의 가장 작은 값을 선택하여 출력하기 위해 PriorityQueue 자료구조를 활용한다. Integer 우선 순위 큐는 기본 값으로 오름차순, 즉 수가 작을수록 우선 순위가 높기에 매개변수를 변경하지 않는다. 입력 받은 x 가 0 이 아닐 경우 큐에 x 를 삽입하고, x 가 0 일 경우 큐의 원소 존재 여부에 따라 0 을 출력할 지, 우선 순위에 의해 가장 작은 수를 꺼내어 출력할 지 결.. 2022. 7. 24.