본문 바로가기

전체 글

(88)
백준 6087 <레이저 통신> 우선순위 큐를 사용해봤다면 생각보다 어렵지 않았던 문제 우선순위 큐를 사용하여 거울을 작게 설치한 것부터 큐에서 꺼낼 수 있도록 한다! 문제 주의사항! 90도로 회전하거나 직선으로 가는 총 3가지 경우만 생각해준다.--> 즉 뒤로 반사되는 경우는 없음! 문제 해결 순서 시작점을 정해서 우선순위 큐에 넣어준다. 90도로 회전하게 되면 count를 1 증가시켜주고 직선으로 가게 되면 증가시켜주지 않는다. 큐에서 꺼낸 점이 종료점이면 result에 count값을 넣고 return 한다 현재의 좌표와 거울을 세운 갯수와 이전의 방향을 나타내기 위한 변수를 who라는 클래스에 선언! BFS를 돌면서 90도로 회전하게 되면 count를 1 증가시켜주고 직선으로 가게 되면 증가 X 이 부분에서 특이한 점이 있다면 중..
백준 2174 <로봇 시뮬레이션> 가장 기본적인 시뮬레이션.. 골드 5여서 쉽게 문제 읽다가는 틀렸습니다! 뜨는 그런 문제.. 문제는 간단하다 각자의 위치에서 명령대로 수행하다 벽을 만나거나 다른 로봇과 부딪히면 종료하는 문제! 이문제에서 주의해야 할 점은 !! 맵과 방향!! 이렇게 뒤집어서 보게되면 N이 동쪽을 가리키게 되고 일반적으로 생각했던 방향과 다르게 된다는 점!! 기존에는 dir [][] = {{ -1 , 0 }, { 0, 1 }, { 1, 0 }, { 0, -1 } }; 이렇게 동 서 남 북이었다면 dir [][] = {{ 0, 1 }, { 1, 0 }, { 0, -1 }, { -1, 0 } }; 이렇게 구성을 하는 것이다. 물론 첫 번째처럼 하려면 N이 방향 1이라고 줘도 되긴 한다! 나머지는 간단하다. 로봇의 위치와 방향..
백준 11000 <강의실 배정> 알고리즘 중 내가 어렵다고 생각한 그리디 부분의 문제이다. 이 문제에서 생각할 것은 얼마나 많은 수업이 겹치냐!이다. 그리디로 밖에 풀 수 없는 이유는 S와 T의 범위가 10의 9승으로 모든 N개 범위가 0부터 10의 9승이라면 10의 9승 곱하기 20만= 즉 엄청난 숫자가 되므로 당연히 X 다른 방법으로 N을 종료 시간 순으로 정렬해서 계속 비교해주게 된다면 N의 제곱! 20만의 제곱으로 시간을 마찬가지 로 터지게 된다. X 이 문제가 다른 문제에 비해 까다로웠던 이유는! 두 가지 단계를 거쳐 판단해야 했기 때문이다. 이 문제의 순서는 두 단계이다. 시작시간으로 정렬 우선순위 큐를 사용하여 종료시간이 짧은 순으로 나올 수 있게 한다!! 여기서 2번의 우선순위 큐를 사용한다고 생각을 하게 되는 것이 가장..