문제설명
입력 & 출력
나의 풀이
문제 자체는 어렵지 않지만 생각이 조금 필요한 문제였습니다.
먼저 입력받은 단어 word를 toLoweCase() 메서드를 사용하여 소문자로 변환해줍니다.
그리고 풀이의 핵심인 객체를 사용하기 위해 객체를 obj라는 변수명으로 선언과 초기화를 해줍니다.
객체의 key를 입력받은 단어의 요소로 넣어주고, 단어를 순환하는데 만약 해당 요소의 value가 undefined
즉 없으면 1을 넣어주고 있다면 1을 더해주어 개수를 세줍니다.
그러면 위와 같이 단어의 각요소의 개수를 구할 수 있습니다.
20번째 줄에서 객체를 순환하기 위한 for in문을 사용해 주었습니다. 그전에 문자의 개수를 비교해서 바꿀 수 있도록 cnt라는 변수를 0으로 초기화해줍니다.
그리고 객체를 순환하면서 가장 큰 값(많이 나온 문자)을 찾아 해당 key 즉 문자를 toUpperCase() 메서드를 사용하여 대문자로 변환하고 최조 반환 변수인 result에 저장을 합니다.
이때 만약에 가장 많이 나온 문자가 중복이 있다면 result를 '?'로 바꿔 반환하여 마무리했습니다.
다른 풀이 ✅
"나의 풀이"와 다르게 아스키코드 관련 메서드를 사용했습니다.
먼저 입력받을 때 toUpperCase() 메서드를 사용하여 대문자로 받아줍니다. 그리고 Array()와 fill() 메서드를 사용하여 0으로 채워진 길이 26인 배열을 생성해 줍니다.
그리고 charCodeAt() 메서드를 사용하여 입력받은 단어의 각 요소를 인자로 넣어 코드 값을 받습니다. 그리고 해당 코드의 인덱스에 1을 더해주어 입력받은 단어의 개수 배열을 만들어 줍니다.
이때 65를 빼준이유는 대문자 A에 해당하는 10진수가 65이기 때문입니다.
10번째 줄에서 Math.max()와 전개 연산자(...)를 사용하여 인덱스 배열의 최댓값을 구해 가장 많이 나온 인덱스를 구해줍니다. 13번째 줄에서 인덱스 배열을 순환하는데 만약에 max를 만나면 이번엔 반대로 fromCharCode() 메서드를 사용하여 해당하는 문자를 arr배열에 push 해줍니다.
마지막으로 arr배열의 길이가 1 이상이면 가장 많이 나온 문자가 2개 이상이라는 뜻이므로 '?'를 리턴, 아니라면 최대로 많이 나온 문자를 반환하여 마무리했습니다.
참고 ❗
[JavaScript] 전개 연산자(Spread Operator) [...] 와 Rest Parameter
전개 연산자(Spread Operator) 전개 연산자(스프레드 연산자 ...)는 배열의 요소나 반복 가능한 객체 등의 요소를 전개하거나 나열해주는 연산자 입니다. apply()를 이용하여 배열의 요소 전개하기 functi
pixx.tistory.com
[JavaScript] 반복문(loop) 정리 for / for in / for of / foreach
JavaScript의 반복문은 특정 작업을 반복적으로 할 때 사용할 수 있는 구문입니다. 가장 전형적인 for문을 시작으로 다양한 종류의 반복문들이 있습니다. 각 반복문마다 장점이 있고, 성능 또한 차
pixx.tistory.com
(JavaScript) 객체(Dictionary) 알아보기
1. 객체(Object) 배열에서는 아이템에 대한 식별자(인덱스)로는 숫자를 사용했습니다. 그렇기 때문에 인덱스를 사용해서 데이터에 접근할 수가 있었습니다. 그러나 숫자가 아닌 문자를 사용하기
pixx.tistory.com
[JavaScript] fill() 함수 알아보기
fill() fill(value) fill(value, start) fill(value, start, end) value (필수) 해당 배열 위치에 넣을 값. value가 객체인 경우, 배열의 각 슬롯은 해당 객체를 참조합니다. start (옵션) 0 기반으로 채우기를 시작할 인
pixx.tistory.com
[JavaScript] charCodeAt(), fromCharCode() 알아보기
코딩을 하다 보면 문자의 아스키코드(ASCII) or Unicode가 필요할 때가 있습니다. 이때 문자의 아스키코드를 구할 수 있는 charCodeAt()와 fromCharCode()메서드를 알아보고자 합니다. charCodeAt() string.charCodeAt
pixx.tistory.com
'Coding Test > 백준' 카테고리의 다른 글
[백준] 그룹 단어 체커 (node.js , 1316번) (0) | 2024.04.07 |
---|---|
[백준] 크로아티아 알파벳 (node.js, 2941번) (0) | 2024.04.06 |
[백준] 별 찍기 - 7 (node.js, 2444번) (0) | 2024.04.04 |
[백준] 다이얼 (node.js, 5622번) (0) | 2024.04.01 |
[백준] 문자열 반복 (2675번, node.js) (0) | 2024.03.27 |