본문 바로가기

전체 글

(88)
백준 1445 <일요일 아침의 데이트> 골드 2의 문제 하지만 골드 2보다는 쉬운 난이도라고 생각한다. 이 문제에서 헷갈렸던 점은 언제 인접한 칸을 체크해주냐는 것이었다. 이렇게 밑줄 친 부분을 보면 이동 할 칸에 쓰레기가 있다면 옆을 살피지 않고 없다면 4방을 탐색해서 체크를 해주는 것이었다. 이 부분만 고려해 우선순위 큐를 사용해주면 쉽게 해결되는 문제이다. 문제 풀이 쓰레기를 가장 적게 밟은 것 중에 적게 옆을 지나간 횟수의 위치를 꺼내 준다. 4방향 탐색 후 이동할 칸에 쓰레기가 존재한다면 쓰레기 카운터를 증가시키고 그렇지 않다면 4방향을 탐색해 쓰레기가 있는지 확인해서 있다면 옆에 쓰레기 있는 카운터를 증가시킨 후 큐에 넣는다. 이렇게 꽃이 있을 때까지 진행하는 것이다. 우선순위 큐로 비교해주기 위한 class를 하나 생성해주었다. ..
백준 1238 <파티> 문제를 보면 어디 지점에서 어디까지의 최소거리 -->즉 다익스트라 알고리즘 문제이다. 각자의 위치에서 파티장소까지 가는 최소거리에 파티장에서 자신까지 오는 최단거리를 더하면 된다. 각자 위 위치에서 파티 장소까지 가는 거리는 즉 N-1*M 파티 장소에서 모든 장소까지 1*M 이므로 N*M으로 천만으로 충분하다. 문제 풀이 각자의 위치에서 파티 장소까지 최단거리를 각각 구해서 저장한다. 피티장소에서 모든 장소를 최단거리로 검색하며 각자의 위치 값에 더한다. 최소 출력! 문제를 많이 풀어보는것이 알고리즘의 실력이 느는 단계라고 할 수 있다. 그림처럼 주황색 학생으로 부터 파티까지 가는 최단거리 다익스트라를 구한다. 이처럼 모든 학생의 위치에서 파티까지의 최단거리를 다익스트라로 구한다. 그 후 파티 장소에서 ..
백준 2002 <추월> 생각하는 것에 따라 어려움과 그렇지 않음으로 나눠지는 문제 같다. 들어가는 차량이라면 이름이 처음 등장할 것이고 나오는 차량이라면 두 번째로 등장할 것이다. 이점을 유의해서 자기 차례에 자신의 차가 아니고 다음차량이 나오는 개수를 세주면 되는 문제이다. 자기 들어가는 차량이 몇번짼지 체크해주기 위해서 hashmap을 사용했고 key는 차 이름 value는 몇 번 짼 지를 넣어주었다. 풀이 순서 처음 등장한다면 hashmap에 차이름과 순서를 넣어준다. 시작 순서는 0번 부터 시작하고 hashmap에 있는 차가 또 나오면 순서를 확인하고 이후 번호면 count를 해준다. 이때 visit 배열에 방문처리를 함으로써 이미 나온 것을 표시해준다. 자신이 차례가 맞으면 나오지않은 순서중 다음 순서로 옮겨준다. 자..