목록BFS (89)
어흥
문제 링크: https://www.acmicpc.net/problem/21608 21608번: 상어 초등학교 상어 초등학교에는 교실이 하나 있고, 교실은 N×N 크기의 격자로 나타낼 수 있다. 학교에 다니는 학생의 수는 N2명이다. 오늘은 모든 학생의 자리를 정하는 날이다. 학생은 1번부터 N2번까지 번호 www.acmicpc.net 1. 주의할 점 - 우선순위 큐 정렬을 잘 정리한다 - 요구에 맞게 정확히 구현한다 2. 구현 - Arr[][] 배열을 통해 해당 자리에 위치한 학생 번호를 저장한다 - favorPeople[] Set을 통해 해당 학생이 선호하는 학생 번호를 저장한다 - score[] 배열을 통해 선호하는 학생들의 수에 해당하는 점수를 반환한다 - 배치할 학생들의 순서를 people 큐에 ..
문제 링크: https://www.acmicpc.net/problem/9470 9470번: Strahler 순서 지질학에서 하천계는 유향그래프로 나타낼 수 있다. 강은 간선으로 나타내며, 물이 흐르는 방향이 간선의 방향이 된다. 노드는 호수나 샘처럼 강이 시작하는 곳, 강이 합쳐지거나 나누어지는 곳 www.acmicpc.net 1. 주의할 점 - 매 TC마다 초기화 작업을 수행한다 - Stahler가 1 늘어나는 기준을 이해한다 2. 구현 - 모든 간선에 대한 정보를 Li[] 에 담는다 - Conn[] 배열을 통해 해당 Node로 도착하는 Node의 수를 저장한다 - Counting[]을 통해 각 Node에 도착한 Stahler 번호를 저장한다. 이때 Stahler번호가 1개도 없었다면 추가, 1개라도 ..
문제 링크: https://www.acmicpc.net/problem/15900 15900번: 나무 탈출 평소에 사이가 좋지 않던 성원이와 형석이가 드디어 제대로 한 판 붙으려고 한다. 성원이와 형석이 둘과 모두 똑같이 친한 인섭이가 대결 종목을 정해 가져왔다. 바로 '나무 탈출' 이라는 보드게 www.acmicpc.net 1. 주의할 점 - 트리 탐색시 방문 검사를 하지 않으면 TLE가 날 수 있다 2. 구현 - 간선에 대한 정보를 Li[] 배열에 담는다 - Root부터 idx Node까지의 거리를 Dist[idx]에 저장한다 - 트리 탐색을 하며, Leaf Node인 경우, Sum에 Dist[] 값을 추가한다 - 성원이가 게임을 이기기 위해서는 홀수번째 움직임에 게임이 끝나야 한다. 즉, Leaf N..
문제 링크: https://softeer.ai/practice/info.do?eventIdx=1&psProblemId=540 Softeer 제한시간 : C/C++(1초), Java/Python(2초) | 메모리 제한 : 256MB 자율주행 기술의 발전과 함께 차량 내 인포테인먼트 기술 또한 많은 주목을 받고 있다. 최근 자동차 실내에는 디스플레이의 대형화를 비 softeer.ai 1. 주의할 점 - 시뮬레이션을 통해 구현한다 - 최대한 최적화를 진행해야 겨우 통과한다 - 같은 색의 차량 1대도 사라질 수 있다 2. 구현 - 3번의 DFS() 함수를 수행한다 - DFS() 함수내에는 다음과 같은 기능을 순차적으로 수행한다 - 현재 차량의 상태를 나타내는 Arr[][] 배열을 Dup[][] 배열에 저장한다 ..
문제 링크: https://programmers.co.kr/learn/courses/30/lessons/86971 코딩테스트 연습 - 9주차 9 [[1,3],[2,3],[3,4],[4,5],[4,6],[4,7],[7,8],[7,9]] 3 7 [[1,2],[2,7],[3,7],[3,4],[4,5],[6,7]] 1 programmers.co.kr 1. 주의할 점 - N이 100개 이하다 - Tree다 → 임의의 서로 다른 두 Node A,B로 가기 위한 방법은 유일하다 2. 구현 - 입력받을 때, Conn[][] 배열을 통해 두 Node의 간선 여부를 파악하고 V[] 벡터를 통해 각 Node와 연결된 다른 Node를 저장한다 - N이 작기 때문에 연결되어 있는 서로 다른 두 Node A,B의 간선을 자르고 ..
문제 링크: https://www.acmicpc.net/problem/17265 17265번: 나의 인생에는 수학과 함께 세현이의 인생의 목표는 1분 1초 모든 순간 수학과 함께 살아가는 것이다. 그렇기 때문에 매일 수학을 생각하면서 살아가고 있다. 세현이는 밥을 먹을 때도 쌀알의 수를 계산하여 칼로리를 바로 www.acmicpc.net 1. 주의할 점 - 이동 가능한 방법으로는 하하, 하우, 우하, 우우 총 4가지의 방법이 존재한다 2. 구현 - Check[][][] 배열을 통해 각 지점까지 이동할 때 얻을 수 있는 최대 및 최소값을 저장한다 - BFS() 함수를 2번 수행하여 한 번은 최대를, 다른 한번은 최소를 구하도록 한다 - BFS 탐색을 수행하기전, Check[][] 배열을 초기화하고 시작한다..
문제 링크: https://www.acmicpc.net/problem/22116 22116번: 창영이와 퇴근 A1,1에서 AN,N까지, 경로상의 최대 경사의 최솟값을 출력한다. www.acmicpc.net 1. 주의할 점 - 여러가지 푸는 방식이 존재하지만, 1씩 증가시키면서 10억까지 테스트 → TLE 발생 2. 구현 - BFS+이분탐색을 통해 차이가 Mid이하라면 전진이 가능하다고 판단 - L=0, R=10억, Result = R-L로 초기화 하고 이분탐색을 시작한다 - Mid = L+(R-L)/2를 통해 Mid값을 갱신하고, BFS()가 가능하면 Result의 값도 갱신한다 import java.util.*; import java.lang.*; import java.io.*; class Main {..
문제 링크: https://programmers.co.kr/learn/courses/30/lessons/81302 코딩테스트 연습 - 거리두기 확인하기 [["POOOP", "OXXOX", "OPXPX", "OOXOX", "POXXP"], ["POOPX", "OXPXP", "PXXXO", "OXXXO", "OOOPP"], ["PXOPX", "OXOXP", "OXPOX", "OXXOP", "PXPOX"], ["OOOXX", "XOOOX", "OOOXX", "OXOOX", "OOOOO"], ["PXPXP", "XPXPX", "PXPXP", "XPXPX", "PXPXP"]] [1, 0, 1, 1, 1] programmers.co.kr 1. 주의할 점 - BFS를 통해 해결하며, 무엇을 기준으로 수행 할 것인지 ..