feel321   1년 전

js로 입력받아 처리할때 이해가 가지 않는것이 있어 질문드립니다.

입력에 대해서 제가 올린 코드와 같이 처리를 하면

마지막을 제외하고, 문자열 + '\r'이 붙게되는데, length를 찍어보니까 + 1이 되어 나옵니다.

'wait'은 length가 4지만,

'wait\r'은 length가 5더라고요

이 경우 입력 예시와 같이 중간의 'wait\r'과 마지막 입력 'yours'는 length가 5로 같은 길이로 판단하지 않나요????


마지막을 제외하고 1글자씩 빼주려

input.map((element, idx) => {
  if (idx === input.length - 1) return element
  return element.slice(0, element.length - 1)
})

이렇게 처리를 했는데 다른분들은 그렇게 처리를 안하셔서 질문합니다.

lcr7324   1년 전

채점 환경은 리눅스이기 때문에 줄바꿈이 \r\n이 아니라 그냥 \n입니다.

feel321   1년 전

@lcr7324 선생님 답변 감사드립니다.

로컬에서 파일을 읽어서 테스트했는데요.
이 때 질문의 주석처럼 마지막을 제외하고 \r이 붙었습니다.

근데 length로 sort하면 짧은게 먼저 잘 오더라구요.
로컬에서 'wait\r'의 length가 5이고, 'yours'의 length가 5이니 이건 길이를 같다고 봐야 하는게 아닌가 싶어서 질문했습니다.

로컬에서 돌아갈때 제가 놓친 부분이 있을까요?

백준 실제 테스트에서 \r이 안들어가는것은 이해했으나, 로컬에서는 \r이 들어가는데 왜그런지 궁금해서 질문했습니다.

lcr7324   1년 전

지금 올려주신 코드를 보면 단어의 길이만 보고 길이가 같은 경우 사전순 비교를 안하는 것으로 보입니다.

그렇기 때문에 단어의 길이가 같은 경우 단순히 입력에서 먼저 들어온 것이 앞에 오게 되는 구조이구요.

aaaaa를 맨 앞으로 보내면 wait\r 보다 앞에 오게 될 것으로 보입니다.

feel321   1년 전

@lcr7324

선생님의 조언덕분에 어떤 점을 놓쳤는 확인하고 풀 수 있었습니다. 감사합니다.

어제의 제가 무슨 생각으로 질문한지 잘 이해가 가지 않습니다. 그저 죄송할 따름입니다...

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