강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

ms4803gs님의 프로필 이미지
ms4803gs

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

5-F

5-F 질문 드립니다.

해결된 질문

작성

·

25

0

http://boj.kr/ed6704d5ad874668ba2593725b8fd901

  1. 이와 같이 while문 안에서 한 번에 처리하는 방식이 논리적으로 오류가 있을까요? 큰돌님은 while 문에서 우선순위 큐에 모든 것을 넣고 그 후에 조건문으로 한 번에 처리하셔서 여쭤봅니다.

  2. 이 코드와 같이 j++; 을 if문 속이 아닌 반복문 제일 밑에 두었을 때의 문제가 있을까요?

답변 1

0

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 ㅎㅎ

전반적으로 좋은 코드입니다. ㅎㅎ

이런 시도도 좋죠.

다만, 저희가 문제를 풀 때 중요한 건 로직을 짜고 -> 실제 어떤 반례를 해결하지 못하나를 중심으로 봐야 합니다.

 

이 코드는 다음의 반례를 해결하지 못합니다.

반례는 다음과 같습니다.

3 2

2 10

2 20

2 30

5

5

 

답 : 50

수강생님 : 0

+예제입력 2 도 통과하지 못합니다.

 

이와 같이 while문 안에서 한 번에 처리하는 방식이 논리적으로 오류가 있을까요? 큰돌님은 while 문에서 우선순위 큐에 모든 것을 넣고 그 후에 조건문으로 한 번에 처리하셔서 여쭤봅니다.

-> 가방안에는 한개의 보석만이 들어가야 합니다. 제 로직은 다 넣어보고 -> 하나 뺀다는 로직인데 지금의 수강생님 로직은 그 로직을 수행하지 못합니다. j가 끝까지 가서 while이 종료되면(= 남은 보석이 다 현재 가방에 들어갈 수 있을 때) 그 가방에서 아예 pop을 안 하는 경우가 생겨버립니다.

  1. 이 코드와 같이 j++; 을 if문 속이 아닌 반복문 제일 밑에 두었을 때의 문제가 있을까요?

-> while(j++)을 안하고 마지막에 j++을 한다는거 말씀이시죠? 이부분은 문제가 아닙니다. 다만 전체적으로 로직 자체가 반례가 있는 로직입니다.

 

 


 


 

또 질문 있으시면 언제든지 질문 부탁드립니다.

좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.


ms4803gs님의 프로필 이미지
ms4803gs

작성한 질문수

질문하기