본문 바로가기

프로그래머스22

[JS] 가장 가까운 같은 글자 테스트케이스 최대 소요시간 : 4.19ms 제출답안 function solution(s) { let sArr = [...s]; let answer = []; sArr.forEach((thing,index)=>{ let i; for(i = index-1 ; i > -1 ; i-- ){ if(thing == sArr[i]) { //일치하는 글자를 찾은 경우 //몇 칸 앞인지를(기준 문자 index - 확인 중인 문자 index) answer에 넣고 for문 종료 answer.push(index-i) ; break; }; } if(i < 0 ) answer.push(-1); // 일치하는 글자가 없는 채로 for문이 종료 된 경우 }) return answer; } 문제를 다 풀고 나서, 문자열 s를 배열로 .. 2024. 3. 10.
[JS] 삼총사 (프로그래머스) 테스트케이스 최대 소요시간 : 0.22ms 제출답안 function solution(number) { // 1번째 학생은 배열 앞부분부터 배열의 뒤에서 세번째까지 돈다.(2번째와 세번째 학생의 자리)(O O..O X X) // 2번째 학생은 1번 뒷자리부터 배열의 뒤에서 두번째까지 돈다. // 3번째 인간은 2번 뒷자리부터 배열의 맨 뒤까지 돈다. // 삼총사 조합을 찾을때마다 answer에 ++한다 var answer = 0; for(let a = 0 ; a < number.length-2 ; a++){ for(let b= a+1 ; b < number.length-1 ; b++){ let find = 0 - number[a] - number[b]; for( let c= b+1; c < number.l.. 2024. 3. 8.
[JS] 푸드 파이트 대회 테스트케이스 최대 소요시간 : 0.07ms 제출답안 function solution(food) { let front = "" ; //앞부터 let back = "" ; //뒤에서부터 for(let i = 1 ; i < food.length ; i++){ // 문자열 i 를 수량/2 의 몫만큼 반복해서 입력 let string = (i+"").repeat(Math.trunc(food[i]/2)); front += string; back = string+back; } return front+"0"+back; } 이걸 더 짧게 back을 따로 만들지 않고, [...front].reverse().join('') 식으로 쓴 것을 보았다. 함수의 세계는 무궁무진. [...front] = front문자열을 한 글자씩.. 2024. 3. 7.
[시간복잡성] indexOf(), hash변환 후 값 추출 코테를 풀다가, indexOf() 를 사용해 시간초과가 나던 부분을 전체 배열을 {배열의 값: index, ...} 형태의 hash로 변환하고 값을 추출하는 식으로 변경해서 풀게 되었다. 그렇다면 시간 차이가 얼마나 나는가. 그리고 배열의 길이가 얼마나 짧아야 indexOf()가 유리할까? 모의 배열을 하나 생성해서, 아래 두 가지의 경우를 조사해본다. 시간 소요는 window.performance.now(); 를 사용해서 구했다. 1.배열.indexOf("문자열") 출력 2. 각 위치를 hash로 전부 변환하고 특정 값의 위치 출력 ( ex. {값1 : 0 , 값2 :1, 값3: 2 ... ) 테스트할 배열은 그냥 for문으로 임의로 만들었다. 길면 길수록 뽑기가 힘들었다.. 실행은 10번 정도를 하고.. 2024. 3. 7.
728x90