본문 바로가기

알고리즘112

[백준 / 1244 스위치 켜고 끄기 / JAVA] https://www.acmicpc.net/problem/1244 1244번: 스위치 켜고 끄기 첫째 줄에는 스위치 개수가 주어진다. 스위치 개수는 100 이하인 양의 정수이다. 둘째 줄에는 각 스위치의 상태가 주어진다. 켜져 있으면 1, 꺼져있으면 0이라고 표시하고 사이에 빈칸이 하나씩 www.acmicpc.net 문제 설명 문제 설명 곧이곧대로 구현한 것 같다. 남학생은 전구 배열을 돌면서 받은 전구 번호로 배열 인덱스가 0으로 딱 나눠떨어지면 해당 인덱스의 스위치를 누른다. 여학생은 받은 전구 번호의 스위치를 먼저 바꾸고 양 옆 (Left, Right)를 한 칸 씩 서로 같은지 비교하면서 같다면 양 옆을 1칸 씩 더 이동하면서 계속 비교하다가 범위를 벗어나거나 서로 다르게 되면 탐색을 중단한다. 마.. 2023. 8. 1.
[백준 / 1946 신입 사원 / JAVA] https://www.acmicpc.net/problem/1946 1946번: 신입 사원 첫째 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 20)가 주어진다. 각 테스트 케이스의 첫째 줄에 지원자의 숫자 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개 줄에는 각각의 지원자의 서류심사 성 www.acmicpc.net 문제 설명 처음엔 2중 for문으로 시간 초과가 나서 Map을 쓰는 방법도 써봤는데 이것도 초과에 걸렸다. 느낌상 합격자를 찾는 과정에서 2중 for문을 쓰면 시간초과가 걸리는 것 같다. rating 배열 하나로 인덱스에는 서류 순위를, 인덱스 밸류에는 면접 순위를 저장한다. 이후 면접 순위를 비교하기 위한 compareItvScore에 서류 1등의 면접 순위를 저장 다음 반.. 2023. 7. 30.
[백준 / 2468 안전 영역 / JAVA / DFS] https://www.acmicpc.net/problem/2468 2468번: 안전 영역 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 www.acmicpc.net 문제 설명 모든 지역을 탐색하면서 지나갔던 길과 갈 수 없는 길인지 판단해야한다. 맵에서 최대 높이를 구하고 0부터 최대 높이만큼 반복문을 돌면서 DFS로 해당 높이에서 모든 지역을 탐색한다. dx, dy 배열을 활용하여 상하좌우를 탐색 이미 방문했거나 범위를 벗어나는 경우의 조건을 걸어주면서 더 이상 갈 수 있는 방향이 없으면 이게 하나의 안전 영역이고 1을 return시켜서 areaCnt에 1을 더해.. 2023. 7. 29.
[백준 / 14501 퇴사 / Java / DP] https://www.acmicpc.net/problem/20546 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net 문제 설명 일할 수 있는 요일을 지정해서 최대 요금을 구해야하는 문제 dp[i+t[i]] = Math.max(dp[i+t[i]], dp[i] + p[i]); DP[현재 날의 상담 기간을 계산했을 때 끝나는 날] = max(DP[현재 날의 상담 기간을 계산했을 때 끝나는 날], DP[현재 날까지 계산된 값] + pay[현재 날 상담을 통해 얻는 값]) dp[i + t[i]] = Math.max(dp[i + t[i]], dp[i] + p[i]); 다음날의 계산된 결과 값, 오늘날의 계산된 결과 값 중 큰 값을 다음날 값에 삽입 위의 두 .. 2023. 7. 29.
[백준 / 14425 문자열 집합 / JAVA] https://www.acmicpc.net/problem/14425 14425번: 문자열 집합 첫째 줄에 문자열의 개수 N과 M (1 ≤ N ≤ 10,000, 1 ≤ M ≤ 10,000)이 주어진다. 다음 N개의 줄에는 집합 S에 포함되어 있는 문자열들이 주어진다. 다음 M개의 줄에는 검사해야 하는 문자열들이 주어 www.acmicpc.net 문제 설명 간단하게 N줄에 걸쳐 선언한 문자열 S들이 M줄에 걸쳐 선언한 문자열들과 같은지 비교하는 문제 for문을 사용한 방법과 map을 사용한 방법으로 풀이 위가 map, 아래가 for문 for문 import java.util.*; import java.io.*; public class Main { public static void main (String[] a.. 2023. 7. 29.
[백준 2503 / 숫자 야구 / JAVA / 구현] https://www.acmicpc.net/problem/2503 2503번: 숫자 야구 첫째 줄에는 민혁이가 영수에게 몇 번이나 질문을 했는지를 나타내는 1 이상 100 이하의 자연수 N이 주어진다. 이어지는 N개의 줄에는 각 줄마다 민혁이가 질문한 세 자리 수와 영수가 답한 스트 www.acmicpc.net 문제 접근 상상 속의 정답을 스트라이크와 볼로 찾아나가야 한다. 정답은 0이 될 수 없고, 서로 겹칠 수 없기 때문에 정답의 경우는 123 ~ 987 사이다. 이 사이의 수를 check 배열에 true로 처음에 지정 이후 123~987 사이에 정답일 수 있는 수와 입력받은 숫자 3자리를 일일이 비교하며 스트라이크와 볼인지 판단 이 때 판단한 스트라이크와 볼이 입력받은 스트라이크와 볼의 수와 같은지.. 2023. 7. 27.