kth990303   3년 전

C++로 코드를 작성하였고, 개수의 차가 1일 때 왼손잡이이므로 왼쪽을 누르는 조건으로 소문자가 아닌 키일 때, left-right<=1일 때 left++ 조건을 추가하였습니다.

질문검색에서 aaaJJ 일 때 4 3 예시가 있길래 그것까지 추가하였는데 틀렸습니다가 떠서 반례 부탁드립니다 ㅠㅠ

rootsquare   3년 전

다음과 같은 반례들이 존재합니다.

입력: AAAAAA

이 코드의 출력: 7 5

올바른 출력: 6 6

왼손으로 a를 다 누르고 오른손으로 Shift를 눌러야 합니다.

입력: a a a a

이 코드의 출력: 5 2

올바른 출력: 4 3

왼손으로 a를 다 누르고 오른손으로 스페이스바를 눌러야 합니다.

먼저 글자들을 입력받은 후 shift나 스페이스바를 나중에 처리하는 방식으로 풀어보세요.

kth990303   3년 전

@rootsquare 

감사합니다 좀 오래전에 푼거라 나중에 다시 풀어보려고 합니다!

다음에 다시 풀 때 참고하도록 하겠습니다.

ps 최근 플레 가신거 축하드립니다!


rootsquare   3년 전

@kth990303

감사합니다~

kth990303   3년 전

덕분에 해결했습니다 감사합니다!


+) 저랑 똑같은 실수를 하시는 분이 추가로 계실까봐 위 코드가 오류인 이유를 남기자면,

만약 AAAAAA를 누르려 하면,

shift키는 보통 문자를 치기 전에 입력하니까

먼저 shift를 왼쪽으로 누르고 A을 누른다 해서 2 0,

AA 3 1 (A입력 후 shift키를 떼므로 다시 shift를 입력한 후 a키를 입력)

AAA 4 2

AAAA 5 3

AAAAA 6 4

AAAAAA 7 5

이렇게 해서 처음에 정답이 7 5일 것이라 예상했는데,

건덕이가 왼쪽과 오른쪽 차이를 줄인다는 것이, 당시 키를 입력할 때의 차이를 줄이려 하는 것이 아닌,

최종 결과일 때 왼쪽과 오른쪽 차이를 줄인다는 것이었습니다.

즉, 타자로 aaaaaa를 다 칠 때 6, 0이 되니까 미리 쉬프트키를 오른쪽만 눌러야겠다고 똑똑한 건덕이는 미리 다 생각해둔 후 타자를 치는 것입니다!

따라서 문제에서도 문자를 다 입력해 놓은 후, shift, space bar 키로 차이를 조절한다는 말이 있었던 것입니다.

댓글을 작성하려면 로그인해야 합니다.