[코딩테스트] 1157 : 단어공부

YJMINT·2023년 7월 16일
1

코딩테스트

목록 보기
5/6

◽️ 계기

처음으로 맞춘 백준의 1157번 : 단어공부 문제!!! 정말 너무너무 뿌듯해서 풀이과정을 적어보려고 한다. 이번 문제를 풀 수 있었던 이유는 비슷한 유형의 문제를 몇번 풀어봤기 때문이라고 생각한다. 코딩테스트 문제는 수학문제와 같다더니.. 슬슬 그 이유를 알거 같다. 앞으로도 꾸준히 해야지!

◽️ 풀이과정

나는 2번째 풀이과정대로 풀었다. 대소문자에 구분을 두지 않는다고 해서 냅다 전부 대문자로 만드는 방법이 문제풀이에 도움이 될거라 생각했기 때문이다. 내 문제를 해결하고 나서 다른 사람의 풀이도 봤는데, 대부분 나처럼 풀었더라. (감격)

◽️ 소스코드

const fs = require('fs');
const input = fs.readFileSync('input.txt').toString().trim().split('');
let inputBigLetterChange = input.map(v => v.toUpperCase()) //input값 전부 대문자로 변경
const bigLetter = [..."ABCDEFGHIJKLMNOPQRSTUVWXYZ"];
let count = new Array(26).fill(0);

for (let j=0; j<inputBigLetterChange.length; j++) { //대문자로 바꾼 input값
    for (let i = 0; i<bigLetter.length; i++) { //대문자 배열
        if (bigLetter[i]===(inputBigLetterChange[j])) {
            count[i] += 1;
        }
    }
}

const maxValue = Math.max(...count);//count 배열의 최대값

let maxCountIndex = []; //최대값 인덱스 담을 배열

for (let i = 0; i < count.length; i++) {
        if (count[i] === maxValue) { //count배열을 순회하며 최대값을 만나면
            maxCountIndex.push(bigLetter[i]); //maxCountIndex배열에 추가
        }
}

if(maxCountIndex.length === 1 ) {
    console.log(maxCountIndex[0])
} else { //maxCountIndex의 길이가 1이 아니라면 최대값을 가진 인덱스가 많다는 것 or 없는 것
    console.log('?');
}

이제 자랑스럽게(?) 내놓을 수 있는 순수 내 머리에서 나온 소스코드이다. 사실 iterator를 써보고 싶었는데, 이번 문제에서는 약간 사용하기 힘들길래 포기하고 그냥 for문 돌렸다... 다음에는 한 번 사용해봐야지...!! 그리고 다른 사람들은 대부분 아스키코드로 변경해서 사용하던데, 나는 아스키코드를 잘 몰라서 냅다 bigLetter 배열을 만들었다ㅎㅎ

profile
YJMINT's develog

0개의 댓글