lazylazylazylazylazylazylazylazy

백준[JAVA] 10926번 ??! 본문

프로그래밍/Break BOJ byJAVA

백준[JAVA] 10926번 ??!

lazylazylazylazylazylazylazylazy 2021. 2. 21. 23:09
728x90
반응형

https://www.acmicpc.net/problem/10926

 

10926번: ??!

준하는 사이트에 회원가입을 하다가 joonas라는 아이디가 이미 존재하는 것을 보고 놀랐다. 준하는 놀람을 ??!로 표현한다. 준하가 가입하려고 하는 사이트에 이미 존재하는 아이디가 주어졌을 때

www.acmicpc.net

첨에 문제의도를 파악못해서 오답행진이 이어졌다..

(난 처음에 문자열을 입력받고 그 문자열이 joonas면 joonas??!를 출력하는 문제인줄알고 조건문을 만들었다..)

입력조건을 다시보니 내가 어떤 문자를 입력해도 이미 존재하는 아이디라고 가정하고 시작한다..

그에따라 출력은 내가 입력한 아이디에 ??!만 붙여서 출력한다!

문자열을 입력받는 코드를 쓰다가 궁금한게 생겼다 

---------------------------------------------------------------------------------------------

next() 와 nextLine() 차이가 궁금해서 바로 실험코드를 작성해봤다

nextLine() 메소드는 엔터치기 전까지 문자열을 모두 리턴하지만

next() 메소드는 공백(스페이스) 전까지 문자열만 리턴한다! 

 

여기서 또 소름돋는 포인트가 뭐냐면...

next()를 nextLine()보다 위에 쓰면 신기한 일이 발생한다

순서만 바꿨을뿐인데 nextLine() 메소드가 실행되지않고 넘어간다!!

그 이유는 next() 입력후 마지막에 엔터를 칠때  nextLine() 엔터 값을 기준으로 메소드를 끝내기때문에 

바로 종료된다! 

그래서 공백이 포함된 짧은 문장으로 테스트해보면

결과로 나오듯이 next()는 안녕하세요만 나오고  여전히 마지막에 엔터로인해

B의 nextLine()를 끝나므로 입력받는 부분없고  next() 메소드에서 이용된 공백(스페이스) 후 "저는 릴 베이피입니다."만 출력됩니다.

실험코드 작성후 더 궁금해서 구글링해봤더니 내가 말한 엔터가 개행문자였고 

next()메소드때 안녕하세요공백저는공백릴공백베이피입니다.개행문자(엔터)로 입력하였고

next()는 첫 공백(스페이스) 이전인 안녕하세요만 가져갔고

nextLine()으로 넘어간 입력에선 공백저는공백릴공백베이피입니다.개행문자(엔터)가 들어갔는데

마지막에 있던 엔터를 인지하여 자동으로 종료돼서 따로 우리에게 입력하는 부분이 안뜨는겁니다!

-------------------------------------------------------------------------------

문제의 답 코드는...

728x90
반응형

'프로그래밍 > Break BOJ byJAVA' 카테고리의 다른 글

백준[JAVA] 11283번 한글2  (0) 2021.02.21
백준[JAVA] 10998번 AXB  (0) 2021.02.21
백준[JAVA] 10869번 사칙연산  (0) 2021.02.21
백준[JAVA] 10757번 큰 수 A+B  (0) 2021.02.21
백준[JAVA] 10699번 오늘 날짜  (0) 2021.02.18
Comments