코드
let input = require('fs').readFileSync('/dev/stdin').toString().toLowerCase();
const result = new Array(26).fill(0);
for (let i = 0; i < input.length; i++) {
result[input.charCodeAt(i) - 97] ++;
}
const max = Math.max(...result);
const index = result.indexOf(max);
let isSame = false;
for (let j = 0; j < 26; j++) {
if (result[j] === max && index != j) {
isSame = true;
break;
}
}
console.log(isSame ? "?" : String.fromCharCode(index + 65));
문제풀이
처음에는 for 문을 여러 번 써서 풀었는데 시간 초과가 나와버려서 다시 시도해보았다.
charCodeAt 메서드를 통해 유니코드를 바로 알 수 있다.
이를 통해 a-z까지의 배열을 만들고 0을 채워준다.
indexOf 메서드로 max값이 위치한 배열의 index값을 구할 수 있었다.
출력 문에서 만약 중복값이 있었다면 "?"을 출력해주고 아니라면 String.fromCharCode 메서드를 사용하여 해당 index 값에서 65를 더한 값을 (65 부터 "A") 문자열로 생성해 반환하도록 하였다.
'Koala - 9기 > 기초 알고리즘 스터디' 카테고리의 다른 글
[백준/Python] 1673번 치킨쿠폰 (0) | 2023.01.22 |
---|---|
[백준/C] 6502번 (0) | 2023.01.22 |
[백준/python] 14724 관리자는 누구? (0) | 2023.01.22 |
[백준/C++] 1673 치킨 쿠폰 (0) | 2023.01.22 |
[백준] #2828 사과 담기 게임 (0) | 2023.01.22 |