250x250
Notice
Recent Posts
Recent Comments
Link
«   2025/10   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

devlog_owen

[프로그래머스] 영어 끝말잇기 본문

algorithm/(js)프로그래머스

[프로그래머스] 영어 끝말잇기

developer_owen 2023. 11. 14. 15:21
728x90

문제

본문1


 

 

나의 풀이

function solution(n, words) {
    var answer = [];

    for (let i = 1; i < words.length; i++) {
        // words[i-1]의 마지막 문자와 words[i]의 첫 번째 문자 비교
        if (words[i - 1].substr(words[i - 1].length - 1) !== words[i].substr(0, 1)) {
            answer.push((i % n) + 1, Math.ceil((i + 1) / n));
            return answer;
        }
    }

    return [0, 0]; // 위의 조건이 만족되지 않으면 [0, 0]을 반환
}

 

첫번재 풀이. 근데 테스트를 한개를 통과못한다. 보니까 이전에 사용한 단어는 사용하면 안돼서 안되는거 같다.

 

function solution(n, words) {
    var answer = [];
    var usedWords = new Set();

    for (let i = 1; i < words.length; i++) {
        const prevWord = words[i - 1];
        const currentWord = words[i];

        // words[i-1]의 마지막 문자와 words[i]의 첫 번째 문자 비교
        if (prevWord.charAt(prevWord.length - 1) !== currentWord.charAt(0) || usedWords.has(currentWord)) {
            answer.push((i % n) + 1, Math.ceil((i + 1) / n));
            return answer;
        }

        usedWords.add(prevWord);
    }

    return [0, 0];
}

 

이미 쓴 단어를 usedWord로 선언해서 set함수를 썼다. 

usedWord는 set함수의 자료구조다. set은 중복을 허용하지 않는 데이터집합이다.

set은 add()로 값을 추가하고 .has()로 값의 존재 여부를 확인할 수 있다.

 

중복된 값을 확인하기 위해 for문을 돌리면서 prevWord와 cuurentWord의 각각 마지막, 첫글자를 비교해서 일치하지 않거나, usedWord에 cuurentWord가 있으면 답을 반환하게 만들었다

반복할때마다 prevWord는 usedWords에 저장된다.

 

 

 

 

 


 

다른 사람 풀이

 

본문1


 

회고

 

수포자는 힘들어요


 

 

 

 

728x90