devlog_owen
[프로그래머스] 영어 끝말잇기 본문
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
'algorithm > (js)프로그래머스' 카테고리의 다른 글
[프로그래머스] 귤 고르기 (0) | 2023.11.16 |
---|---|
[프로그래머스] 두 개 뽑아서 더하기 (1) | 2023.11.15 |
[프로그래머스] N개의 최소공배수 (1) | 2023.11.13 |
[프로그래머스] 푸드 파이터 대회 (1) | 2023.11.13 |
[프로그래머스] 예상 대진표 (0) | 2023.11.12 |