๋ฌธ์ ๐ฝ
https://school.programmers.co.kr/learn/courses/30/lessons/12981
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
๋ค๋ฅธ์ฌ๋ ํ์ด ๐ฝ
function solution(n, words) {
var fail_i = -1;
for(var i = 1; i < words.length; i++){
var val = words[i];
// ์ ๋จ๊ณ์ ๋๋ง๊ณผ ํ๋จ๊ณ ์ฒซ๋ง์ด ๋ค๋ฅผ ๊ฒฝ์ฐ
if(words[i-1].substring(words[i-1].length-1) != val.substring(0, 1)) {
fail_i = i;
break;
}
// indexOf ํจ์๋ ์ฒซ๋ฒ์งธ๋ก ๊ฐ์ด ๋ง๋ ์ธ๋ฑ์ค๋ง ๋ฐํํ๋ฏ๋ก
// ํ์ฌ ์ธ๋ฑ์ค์ ๋ง์ง ์์ ๊ฒฝ์ฐ ์ค๋ณต๋ ๊ฐ
if(words.indexOf(val) != i) {
fail_i = i;
break;
}
}
if(fail_i == -1) return [0,0];
var no = fail_i%n + 1;
var turn = Math.floor(fail_i/n) + 1;
return [no, turn];
}
๋ดํ์ด๐ฝ
function solution(n, words) {
// n๋ช
์ด m๊ฐ์ ๋จ์ด๋ฅผ ๋๋ง์๊ธฐ ์งํ
let stack = []
let stopPoint =0;
for(let i=0; i<words.length; i++){
if(words[i-1]){
if(stack.includes(words[i])||words[i-1].charAt(words[i-1].length-1)!==words [i].charAt(0)){
stopPoint = i+1;
break;
}else{
stack.push(words[i])
}
}else{
stack.push(words[i]);
}
}
if(stopPoint){
if(stopPoint%n===0){
return [n,parseInt(stopPoint/n)]
}else{
return [stopPoint%n,parseInt(stopPoint/n)+1]
}
}else{
return [0,0]
}
}
๋๋์ ๐ฝ
์ฒ์ ์ฝ๋๋ฅผ ์์ฑํ์๋ ํ ์คํธ ๊ฒ์ฌ์์ ์คํจํ๋ ๊ฒฝ์ฐ๊ฐ ์กด์ฌํ์๊ณ ๋ฌด์๋๋ฌธ์ธ์ง ํ ์ฐธ ๊ณ ๋ฏผํ๋ค ๋ ผ๋ฆฌ์ ์์ด ์ค๋ฅ ๋ถ๋ถ์ ๋ฐ๊ฒฌํ๋ค. ๋ฐ๋ก %์ฐ์ฐ์์ ๋๋จธ์ง๊ฐ 0์ผ ๊ฒฝ์ฐ์๋ n๋ฒ์งธ ์ฌ๋์ด ํ๋ ธ๋ค๋ ๊ฒ์ธ๋ฐ ์ค์ ๊ฐ 0๊ณผ n์ ๋ค๋ฅด๋ค. ๊ทธ๋ฆฌ๊ณ ๋ํ ๋ผ์ด๋๋ฅผ ๊ณ์ฐํ ๋ ๋ถ๊ธฐ ์ฒ๋ฆฌํ์ฌ ์ฐ์ฐ์ ์งํํด์ผ ํ๋ค. ์๋ฅผ๋ค์ด 3๋ช ์ด์ ๋๋ง์๊ธฐ ์ค 8๋ฒ์งธ์์ ์คํจํ์๋ 9๋ฒ์งธ ์คํจํ์๊ฒฝ์ฐ ์ ์๋ 8/3+1 =>3๋ฒ์งธ ๋ผ์ด๋ก ์ฐ์ฐํ๋ฉด ๋๊ณ ํ์์ ๊ฒฝ์ฐ 9/3 =3 => ์ถ๊ฐ๋ก +1์ ํ์ง ์์๋ ์คํจํ ๋ผ์ด๋๋ฅผ ์ ์ ์๋ค.
๋ก์ง์ ๊ตฌ์ฑํ๋ฉด์ charAt ๋ฉ์๋๋ฅผ ์ฒ์ ์จ๋ดค๋ค.
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/charAt
String.prototype.charAt() - JavaScript | MDN
charAt() ํจ์๋ ๋ฌธ์์ด์์ ํน์ ์ธ๋ฑ์ค์ ์์นํ๋ ์ ๋์ฝ๋ ๋จ์ผ๋ฌธ์๋ฅผ ๋ฐํํฉ๋๋ค.
developer.mozilla.org