[プログラマー][JS]JOYSTIC
9686 ワード
質問:JOY STIC
1つの問題は、文字列が与えられた場合、AAAから開始し、数回以内に文字列を作成することです.
質問:https://programmers.co.kr/learn/courses/30/lessons/42860#
解決策
連続して現れるA数がもっと多いか同じなら、後退します.
-(全長-A長-1)+(Aの前に現れる文字数-1).
(Aがないと思った場合に行う)+(backをしたときに通ったこと)<-そう考えて表に記入すればいいと思います.
前の数字がもっと多い場合は、直接行います.
-(全長-1)
コード#コード#
function solution(name) {
let answer = 0;
let aList =[]
let turn =0
for(const char of name){
answer+=changeCharCount(char)
}
if(name[0]==="A") aList.push({idx:0,cnt:1})
for(let i=1; i<name.length; i++){
if(name[i-1]==="A" && name[i]==="A"){
aList[aList.length-1].cnt++
}else if(name[i-1]!=="A" && name[i]==="A"){
aList.push({idx:i,cnt:1})
}
}
aList.sort((a,b)=>b.cnt-a.cnt)
//앞에 있는 개수보다 A개수가 더 많을때
if(aList.length && aList[0].idx<=aList[0].cnt){
turn = (name.length-aList[0].cnt-1)+(aList[0].idx-1)
}else{
turn = name.length-1
}
return answer+turn;
}
function changeCharCount (char){
let charCode = char.charCodeAt()
let start = 'A'.charCodeAt()
const end = 'Z'.charCodeAt()
return Math.min(end-charCode+1,charCode-start)
}
右側で>と叫んだ時に一番前に来たら…考え直すみたい幸いです.今回の問題もそうではないので、解決できます.😅
Reference
この問題について([プログラマー][JS]JOYSTIC), 我々は、より多くの情報をここで見つけました https://velog.io/@proshy/프로그래머스JS조이스틱テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol