young3609   6년 전


덱(deque, double-ended queue) 를 통해서 구현했고 문제에서 말한 아랍어('#')이 나올때는 

뒤로 집어 넣다가 알파뱃을 만나면 앞으로 집어넣는 구조로 구현하였습니다.


문제에서 주어진 TC 는 모두 옳은 답이 나오는 상황이고 채첨시 50%에서 틀렸다고 나오는 상황입니다.

반례나 힌트의 도움이 절실히 필요합니다. ㅠㅠㅠ 간단한 문제인데 안되서 속상하네요 


문제가 영어여서 이해하시는 것이 혹시 귀찮으실까봐 간단하게 중요한 조건만 정리해봤습니다. 

(제가 혹시 빠트린 조건이 있을 수도 있습니다..)


(문제 변경 예시) 

"# #### ### abc ##"이면 "## abc # #### ###"이되도록 변경

-> abc 부터 문자열 끝까지 뒤집어서 # #### ### 앞에 붙인다.

 (문제에서 제가 생각한 풀이 방법입니다.)


< 조건 >

- 테스트 케이스는 1<=T <= 100

- 주어지는 단어의 수 1<=N<=100

- 단어의 길이는 최소 1에서 최대 10자

- 아랍어도 1~10개의 # 문자로 구성되어 있음

- 영어는 1~10개의 영어 소문자로 구성

- Each line contains at most one English word. -> 각 행은 하나의 영어 단어만 포함

EX) #### # abc ### ## (o) 

      ## ac # # abc ## (x)


young3609   6년 전

안녕하세요! 답변 감사드립니다! 의견을 주신 답변이 도움이 됐습니다. 하지만 결정적으로 해당 TC로는 코드 상의 오류는 발견할 수 없었습니다.

그 이유는,

제안해주신 TC는 옳지 못합니다. 그 이유는 문제에서 "한행에 영어 단어는 1단어만 들어간다"라고 명시를 했기 때문에

a b c를 입력할 경우 띄어쓰기 별로 a라는 단어와 b라는 단어와 c라는 영단어 "3개"가 입력되게 됩니다. 

따라서 제안해주신 TC는 문제의 조건에 위배된 TC입니다.

문제에 영문으로 쓰인 조건 

Each line will contain at most one English word. For a line containing an English word, the program that will fix the text will swap the words before the English word with the words after the English word. The words before the English word will remain in the same order. The words after the English word will also remain in the same order. For example, if the line is "# #### ### abc ##", it will be fixed to become "## abc # #### ###".


- Each line contains at most one English word. -> 각 행은 하나의 영어 단어만 포함


하지만 제가 깊이 고민해본 결과 저의 코드에 예외 TC를 발견하였습니다.

1

5

# #### abc ## ###

위의 답은     ## ### abc # ####     가 출력되어야 하지만 위에서 저의 코드는   ### ## abc # ####    이 출력되었었습니다.


영단어를 기준으로 앞과 뒤를 swap 하기만 하면 되는데 너무 어렵게 생각한 것이 문제였습니다.

추후에 같은 어려움을 겪고 계시는 분들은 문제에서 주어진 테스트 케이스 

3
5
# #### ### abc ##
4
## ### ## #####
4
## ##### # xyz

와 더불어 위 테스트 케이스가 올바르게 출력되는지 한번 확인해 보시기 바랍니다.


sgchoi5   6년 전

@young3609 잘못된 내용을 써서 번거롭게 했네요~~ 훌륭하십니다~~

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