PS
-
프로그래머스 양과늑대PS 2024. 9. 30. 20:34
https://school.programmers.co.kr/learn/courses/30/lessons/92343 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 설명2진 트리 모양 초원의 각 노드에 늑대와 양이 한 마리씩 놓여 있습니다. 이 초원의 루트 노드에서 출발하여 각 노드를 돌아다니며 양을 모으려 합니다. 각 노드를 방문할 때 마다 해당 노드에 있던 양과 늑대가 당신을 따라오게 됩니다. 이때, 늑대는 양을 잡아먹을 기회를 노리고 있으며, 당신이 모은 양의 수보다 늑대의 수가 같거나 더 많아지면 바로 모든 양을 잡아먹어 버립니다. 당신은 중간에 양..
-
SWEA 1767 프로세서 연결하기PS 2024. 2. 28. 23:36
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV4suNtaXFEDFAUf SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 풀이 문제를 보고서 기본적인 조합으로 모든 경우의 수를 찾으면 되겠다고 생각하고 접근을 했다. 1. 코어를 List에 담아 부분집합을 구한다. (가장 자리에 붙어있는 코어는 제외) 2. 탐색이 가능한 코어들로 구성된 부분집합을 dfs로 돌린다. - 여기서 주의할 점은 탐색을 진행할 때 map배열의 값을 갱신했다면 다시 원상복구를 하는 코드가 필요하다. 3. 연결된 코어수가 현재까지 나온 값보다 크다..
-
SWEA 1954. 달팽이 숫자PS 2023. 11. 18. 01:22
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PobmqAPoDFAUq SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 풀이 2차원 배열을 생성한 뒤 출력형식에 맞게 값을 갱신해주었다. 문제에선 우, 하, 좌, 상 순으로 방향을 바꿔가며 값을 갱신해주고 있는 것을 볼 수 있다. 격자탐색 문제처럼 dx, dy를 생성해주고 배열을 넘어가거나, 값이 갱신된 적이 있다면 방향을 갱신해주는 식으로 풀이하였다. import java.io.BufferedReader; import java.io.InputStreamReade..
-
SWEA 1249. [S/W 문제해결 응용] 4일차 - 보급로PS 2023. 11. 18. 01:19
https://swexpertacademy.com/main/code/problem/problemDetail.do SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 풀이 높이 정보를 입력받은 뒤 최소값으로 목표지점까지 도달할 수 있게 하였다. 1. 높이정보를 기준으로 한 우선순위 큐를 생성한 뒤, bfs를 돌려 탐색을 한다. 2. 목표지점에 도착한다면 도착한 노드의 최소시간과 정답을 비교하여 값을 갱신하여 준다. import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; import java.util.P..
-
SWEA 1206. [S/W 문제해결 기본] 1일차 - ViewPS 2023. 11. 16. 23:45
https://swexpertacademy.com/main/code/problem/problemDetail.do SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 풀이 건물 갯수만큼 배열을 선언해 건물의 높이 정보를 입력받는다. 구하고자 하는 건물을 기준으로 -1, -2 의 건물 길이 중 큰 값을 left 변수에 저장, +1, +2 중 큰 값을 right 변수에 저장한 뒤 둘 중 큰 값을 max 변수에 저장한다. 현재 건물의 높이와 max의 높이를 비교하여 현재 건물의 높이가 더 높다면 result 변수에 현재 건물높이 - max 의 값을 저장함으로써 문제의 정답을 구할 수 있었다. import java...
-
Java 1253 좋다PS 2023. 9. 11. 22:24
https://www.acmicpc.net/problem/1253 1253번: 좋다 첫째 줄에는 수의 개수 N(1 ≤ N ≤ 2,000), 두 번째 줄에는 i번째 수를 나타내는 Ai가 N개 주어진다. (|Ai| ≤ 1,000,000,000, Ai는 정수) www.acmicpc.net 투포인터로 해결할 수 있는 문제였다. 원소의 배열을 정렬한 뒤 0을 left, n-1을 right로 잡은 뒤 둘의 합이 해당 원소보다 크다면 right - 1, 작다면 left +1을 하여 값을 찾아주는데 여기서 주의할 점은 문제에서 언급되어있듯이 어떤 수가 다른 수 두개의 합이로 나타내어야 하는 조건이 있기에 left, right가 비교하고자 하는 원소와 값이 같은지 다른지 체크를 해주어야한다. import java.io...
-
Java 1654 랜선 자르기PS 2023. 8. 29. 14:22
https://www.acmicpc.net/problem/1654 1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 www.acmicpc.net 해당 문제는 입력값으로 주어지는 갯수가 많기 때문에 브루트포스로 모든 경우의 수를 다 구한다면 시간초과가 나기 때문에 이분 탐색을 활용하여 풀어야하는 문제입니다. 입력값 중에서 가장 큰 값을 max, 작은 값을 min 각각의 변수에는 입력값중에서 큰 값과 0이 들어갑니다. mid의 변수에는 (max+min)/2의 값이 들어갑니다. 배열의 원소에서 mid로 나누어 랜선의..
-
Java 11967 불켜기PS 2023. 8. 25. 15:30
https://www.acmicpc.net/problem/11967 11967번: 불켜기 (1, 1)방에 있는 스위치로 (1, 2)방과 (1, 3)방의 불을 켤 수 있다. 그리고 (1, 3)으로 걸어가서 (2, 1)방의 불을 켤 수 있다. (2, 1)방에서는 다시 (2, 2)방의 불을 켤 수 있다. (2, 3)방은 어두워서 갈 수 없으 www.acmicpc.net 로직은 아래와 같다. 1. 방의 좌표 값들을 2차원 Arraylist에 저장한 뒤 0, 0 에서부터 bfs 탐색을 시작한다. 2. 큐에서 꺼낸 좌표 값을 x,y라고 하겠다. 방의 좌표가 있는 Arraylist[x][y]에는 불을 켤 수 있는 좌표가 저장되어 있다. for each문으로 켤 수 있는 모든 좌표에 불을 켜준다. 3. 상,하,좌,우 ..