본문 바로가기

Algorithm6

[Java] 백준 23309번 - 철도 공사 부제 - LinkedList의 성능 최적화 방안 탐색기 문제 문제설명 연세대학교가 위치한 신촌역이 속한 2호선은 그림과 같이 $N$개의 역이 원형으로 연결되어 있다. 각 역은 고유 번호가 할당돼 있으며 역들의 고유 번호는 서로 다르다. 그리고 특정 역의 다음 역은 시계 방향으로 인접한 역을 의미하고, 이전 역은 반시계 방향으로 인접한 역을 의미한다.2호선은 지하철 노선들 중 유일한 흑자 노선이다. 때문에 2호선 공사 자금이 넉넉하기에 $M$번의 공사를 거치려고 한다. 각 공사는 다음 4가지 중 하나를 시행한다. - 고유 번호 i를 가진 역의 다음 역의 고유 번호를 출력하고, 그 사이에 고유 번호 j인 역을 설립한다.- 고유 번호 i를 가진 역의 이전 역의 고유 번호를 출력하고, 그 사이에 고유 번호 j인.. 2025. 7. 22.
[Java] 백준 13172번 - Σ(시그마) https://www.acmicpc.net/problem/13172 문제 요약 n면체 주사위에 적힌 숫자의 합이 s라면, 기댓값은 s/n이다.m개의 주사위의 n값과 s값이 주어졌을때, 기댓값의 합을 구하면 된다. 단, 기댓값이 분수라면 정확한 답을 구하기가 힘들기 때문에 모듈러 곱셈에 대한 역원(b ^ -1)을 활용한다. 모듈러 곱셈에 대한 역원은 다음을 만족한다. 따라서 기댓값이 기약분수 a/b라면,  (a × b^-1) mod 1,000,000,007으로 대신한다.      단순한 풀이 이 문제의 풀이 과정은 간단하다. (다만 수학공식이 나와서 진입장벽이 높을 뿐이다!)1) 주사위의 면수 n, 적힌 숫자의 합 s의 기댓값은 s/n이다.2) s/n을 기약분수로 만든다. 3) s/n 대신 (s * n^.. 2024. 5. 2.
[Java] 백준 11723번 - 집합 https://www.acmicpc.net/problem/11723 11723번: 집합 첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다. 둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다. www.acmicpc.net 접근 방법 문제를 보자마자 떠오르는 방법은 HashSet 자료 구조를 이용하는 것이었다. 그래서 먼저 HashSet으로 문제를 해결 한 후, 비트마스킹을 학습하고자 리팩토링 해보았다. HashSet import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.HashSet; import java.u.. 2024. 2. 14.
[Java] 백준 1149번 - RGB거리 https://www.acmicpc.net/problem/1149 1149번: RGB거리 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net 접근 방식 가장 먼저 생각나는 것은 그리디적인 접근이었다. i번째 집을 고를 때, i-1에서 선택된 색깔을 제외하고 가장 저렴한 집을 고르는 방식이었는데, 설계를 한 후 대입해봤을 때 다음과 같은 테스트케이스에서 최솟값을 구하지 못할 것으로 예상되었다. R G B i - 1번째 집 32 83 55 i번째 집 51 37 63 i + 1번째 집 89 29 100 즉 완전 탐색을 .. 2024. 2. 10.
[Java] 백준 1244번 - 스위치 켜고 끄기 1244번: 스위치 켜고 끄기 (acmicpc.net) 1244번: 스위치 켜고 끄기 첫째 줄에는 스위치 개수가 주어진다. 스위치 개수는 100 이하인 양의 정수이다. 둘째 줄에는 각 스위치의 상태가 주어진다. 켜져 있으면 1, 꺼져있으면 0이라고 표시하고 사이에 빈칸이 하나씩 www.acmicpc.net 핵심 구현 조건에 해당될 때마다 0이면 1로, 1이면 0으로 바꾸기 구현 방법 1. if - else문 if (num == 1) { num = 0; } else { num = 1; } 2. 뺄셈 활용 num = 1 - num; num 1 - num 1 0 0 1 num이 1일 경우 1 - num = 0이다. num이 0일 경우 1 - num = 1이다. 3. boolean 타입으로 저장 1과 0만 활용.. 2024. 1. 17.
[Java] SWEA - 두 개의 숫자열 문제 출처 SW Expert Academy [D2] 두 개의 숫자열 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PpoFaAS4DFAUq SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 예외 발생 unreported exception IOException; must be caught or declared to be thrown 예외 원인 BufferedReader 사용 시 IOException에 대한 예외 처리가 필요함 기본적인 예외의 경우. Checked Exception과 Unchecked Exception으로.. 2024. 1. 11.