devyouth94   2년 전

참고로 소스코드는 정답 코드입니다.

1. 처음에 inputtrim() 을 안달았더니 맞다고 생각했음에도 틀렸다고 나왔습니다.

2. 구글링 이후에 trim()의 부재가 오류임을 깨닫고 split('\n') 뒤에 달았더니 런타임 에러가 났습니다.

3. 그래서 trim() 을 split('\n') 앞에 달았더니 그제서야 정답이 나왔습니다.


궁금한 점은

이 문제에서 입력을 받을때 trim()이 있어야 하는 이유가 궁금합니다.

그리고 2,3번의 경우 trim()의 위치에 따라 어떠한 차이가 있어서 오류와 정답으로 갈리는지 궁금합니다.


감사합니다.

mingsomm   2년 전

안녕하세요.

1번의 경우는 백준의 tc 중 뒤에 '\n' 이 붙는 경우가 있기 때문이라고 알고 있습니다.

const text = "가\n나\n다\n";


text.split('\n') 처리해주면 ['가','나','다',' ']


뒤에 배열에 공백이 발생해주기 때문에 trim() 을 사용해서 양쪽 공백( 개행, 띄어쓰기 등) 을 제거해주고 시작하는 것입니다.. !

2번(spit 뒤에 trim 을 다는 경우) 이 오류가 뜨는 이유는 .spit("\n") 메서드가 문자열을 \n 기준으로 쪼개서 배열을 반환하기 때문입니다.

예를 들어 split을 통해 [ '가', '나', '다' ] 라는 배열이 생겼습니다. 그런데 뒤에 Arry 메서드가 아닌, String 메서드인 trim() 을 사용하면 타입에러가 발생합니다.


fs.readFileSync('dev/stdin').toString()

따라서 문자열로 반환해주는 toString() 뒤에 trim() 이 붙는 것이 맞습니다.

devyouth94   2년 전

답변 정말 감사드립니다! 써주신것 읽어보니 단번에 이해가 됐습니다.

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