파란색 : 풀면서 어려웠던 부분 or 고려해야 될 부분
빨간색 : 해결방법
초록색 : 느낀 점
문제
https://programmers.co.kr/learn/courses/30/lessons/42587
우선순위를 정하여 먼저 출력할 인쇄물의 대한 처리를 하는 문제이다.
풀이 : 내가 작성한 코드
우선순위와 인덱스를 갖는 Task라는 클래스를 만들어서 Queue에 넣도록 했다. 그런 후 foreach로 하나씩 검사하여 자기보다 뒤 에이 있는 값이 우선순위가 높다면 반복문을 빠져나와 맨뒤로 넣도록 했다. 선입선출이기 때문에 큐를 사용했다. 모든 값들을 정렬할 필요가 없기 때문에 nNow인 순서를 체크하는 변수와 매개변수 location이 같으면 값을 출력해준다.
풀이 : 다른 사람이 작성한 코드
나는 큐에 우선순위와 인덱스 값을 저장할 클래스를 따로 만들었지만 이 코드에서는 KeyValuePair를 사용했다. While문을 돌리면서 큐에 들어가 있는 값들 중에 가장 높은 우선순위의 값이 큐의 맨 처음에 입력된 값과 우선순위를 비교한다. 가장 큰 값이 현재 입력 순서라면 매개변수 location과 비교한다. 그 값이 location도 아닌데 가장 큰 값이면 answer를 하나씩 증가한다. 출력 순서가 아니란 얘기다.
'알고리즘자료구조 > 알고리즘문제' 카테고리의 다른 글
[백준] C# 유기농 배추 (0) | 2021.10.20 |
---|---|
[백준] 알파벳 개수 10808 (0) | 2021.10.18 |
[해커랭크] Caesar Cipher (0) | 2021.10.02 |
프로그래머스_C#)최대공약수와 최소공배수 (0) | 2019.09.12 |
프로그래머스_C#)제일 작은 수 제거하기 (0) | 2019.09.10 |