Problem Solving1486 [백준] 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. [백준] 1918 후위 표기식 - Data Structure / Java • 문제 링크 1918번: 후위 표기식 첫째 줄에 중위 표기식이 주어진다. 단 이 수식의 피연산자는 알파벳 대문자로 이루어지며 수식에서 한 번씩만 등장한다. 그리고 -A+B와 같이 -가 가장 앞에 오거나 AB와 같이 *가 생략되는 등의 www.acmicpc.net • 풀이 과정 후위 표현식을 저장할 StringBuilder 와 연산자의 우선 순위를 구하기 위해 Stack 자료구조를 활용한다. 입력받은 수식의 한 문자 단위로 탐색을 수행하고, 피연산자인 경우 StringBuilder 객체 sb 에 저장, +, -, *, / 의 경우 연산자의 우선 순위를 스택의 상단의 연산자와 해당 연산자를 비교하는 priority 함수를 통해 스택에 저장할 지, 스택의 모든 연산자를 꺼내 sb 에 저장할 지 결정한다. 이.. 2022. 7. 23. [백준] 9935 문자열 폭발 - Data Structure / Java • 문제 링크 9935번: 문자열 폭발 첫째 줄에 문자열이 주어진다. 문자열의 길이는 1보다 크거나 같고, 1,000,000보다 작거나 같다. 둘째 줄에 폭발 문자열이 주어진다. 길이는 1보다 크거나 같고, 36보다 작거나 같다. 두 문자열은 모 www.acmicpc.net • 풀이 과정 입력받은 문자열이 폭발 문자열과 일치할 경우 해당 문자열을 제거하기 위해 Stack 자료구조를 활용해 풀이한다. 입력받은 문자열을 하나씩 스택에 저장하는 중, 스택의 크기가 폭발 문자열의 길이보다 크거나 같을 경우, 스택에 저장된 문자열 중 폭발 문자열의 존재 여부를 나타낼 flag 변수를 생성해 탐색한다. 현재 문자열의 길이에서 폭발 문자열의 길이를 뺀 수를 시작 인덱스로써, 폭발 문자열의 길이만큼 탐색해 일치 여부를.. 2022. 7. 22. 이전 1 ··· 231 232 233 234 235 236 237 ··· 248 다음