인프런 커뮤니티 질문&답변
5-F 질문 드립니다.
해결된 질문
작성
·
25
0
http://boj.kr/ed6704d5ad874668ba2593725b8fd901
이와 같이 while문 안에서 한 번에 처리하는 방식이 논리적으로 오류가 있을까요? 큰돌님은 while 문에서 우선순위 큐에 모든 것을 넣고 그 후에 조건문으로 한 번에 처리하셔서 여쭤봅니다.
이 코드와 같이 j++; 을 if문 속이 아닌 반복문 제일 밑에 두었을 때의 문제가 있을까요?
답변 1
0
안녕하세요 ㅎㅎ
전반적으로 좋은 코드입니다. ㅎㅎ
이런 시도도 좋죠.
다만, 저희가 문제를 풀 때 중요한 건 로직을 짜고 -> 실제 어떤 반례를 해결하지 못하나를 중심으로 봐야 합니다.
이 코드는 다음의 반례를 해결하지 못합니다.
반례는 다음과 같습니다.
3 2
2 10
2 20
2 30
5
5
답 : 50
수강생님 : 0
+예제입력 2 도 통과하지 못합니다.
이와 같이 while문 안에서 한 번에 처리하는 방식이 논리적으로 오류가 있을까요? 큰돌님은 while 문에서 우선순위 큐에 모든 것을 넣고 그 후에 조건문으로 한 번에 처리하셔서 여쭤봅니다.
-> 가방안에는 한개의 보석만이 들어가야 합니다. 제 로직은 다 넣어보고 -> 하나 뺀다는 로직인데 지금의 수강생님 로직은 그 로직을 수행하지 못합니다. j가 끝까지 가서 while이 종료되면(= 남은 보석이 다 현재 가방에 들어갈 수 있을 때) 그 가방에서 아예 pop을 안 하는 경우가 생겨버립니다.
이 코드와 같이 j++; 을 if문 속이 아닌 반복문 제일 밑에 두었을 때의 문제가 있을까요?
-> while(j++)을 안하고 마지막에 j++을 한다는거 말씀이시죠? 이부분은 문제가 아닙니다. 다만 전체적으로 로직 자체가 반례가 있는 로직입니다.
또 질문 있으시면 언제든지 질문 부탁드립니다.
좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.





