알파벳 찾기(10809) - JS

박정호·2022년 2월 11일
0

BAEKJOON

목록 보기
41/57
post-thumbnail

문제를 다시 한번 이해해 보자면, 26개의 알파벳이 반복되고, 입력값 단어의 하나씩 있는 알파벳의 존재유무에 따라 그 알파벳 자리에는 입력값의 인덱스 값을, 존재하지 않는 알파벳은 -1을 표시합니다.
따라서, 저는 알파벳 소문자의 아스키코드 범위인 97 부터 122를 반복시켰습니다. 즉, 알파벳 26개를 모두 반복하여 하나씩 거쳐가는 것입니다. 그리고, 입력값의 길이만큼 내부 반복을 하여 조건문을 주어 서로의 값을 비교하여 동일하면 인덱스 값을, 다르면 -1을 출력하는 코드를 작성하였습니다. 하지만 결국 실패... ㅜㅜ

따라서, 생각한 것이 indexOf() 입니다.

string.indexOf(searchvalue, position)
indexOf 함수는, 문자열(string)에서 특정 문자열(searchvalue)을 찾고,
검색된 문자열이 '첫번째'로 나타나는 위치 index를 리턴합니다.

  • searchvalue : 필수 입력값, 찾을 문자열
  • position : optional, 기본값은 0, string에서 searchvalue를 찾기 시작할 위치
  • 찾는 문자열이 없으면 -1을 리턴합니다.
  • 문자열을 찾을 때 대소문자를 구분합니다.

그리고 숫자로 되어있는 아스키코드를 알파벳으로 변환해주는 fromCharCode()를 사용합니다.

input[j].indexOf(String.fromCharCode(i)); 의 뜻
입력값의 알파벳 배열안에 알파벳으로 변환된 아스키코드값의 존재 유무를 판별합니다.
존재한다면 그 값의 인덱스 값을, 존재하지 않는다면 -1를 반환합니다.

그리고 배열로 선언해놓은 result 배열에 push()를 이용하여 그 값들을 배열에 저장해줍니다.

마지막으로, join(' ')를 이용해서 결과값을 출력해줍니다.
join: 배열의 모든 요소를 연결해 하나의 문자열로 만듭니다.

결국엔 indexOf()를 사용하라고 내준 문제인 것 같네요 ㅎㅎㅎ

참고: https://hianna.tistory.com/379


profile
기록하여 기억하고, 계획하여 실천하자. will be a FE developer (HOME버튼을 클릭하여 Notion으로 놀러오세요!)

0개의 댓글