코테26 [JS] 덧칠하기 - 프로그래머스 점수 : 1102 (+10) 테스트케이스 최대 소요시간 : 2.78ms 제출답안 function solution(n, m, section) { var answer = 0; let filled = section[0]-1 ; section.forEach((empty)=>{ if(empty > filled){ answer++ ; filled = empty + m -1; } }) return answer; } 문제해설 function solution(n, m, section) { var answer = 0; // 페인트를 몇번 칠했는지 // filled = 어디까지 칠했나 = 왼쪽에서부터 칠해진채로 연결된 섹션no. 없으면 0으로 시작 let filled = section[0]-1 ; section.forEac.. 2024. 3. 17. [JS] 추억점수 _ 이걸 한줄로 쓴다고? 점수 :1092 (+1) 테스트케이스 최대 소요시간 : 1.57ms 문제 요약 // 제출답안 function solution(name, yearning, photo) { var answer = []; let miss = {}; name.forEach((n, index)=>{ miss[n] = yearning[index] }); photo.forEach((pho, index)=>{ let nowMissCount = 0; pho.forEach((member,index2)=>{ nowMissCount += (miss[member]) ? miss[member] : 0 ; }) answer[index] = nowMissCount; }) return answer; } 문제해설 function solution(nam.. 2024. 3. 13. [JS] 가장 많이 받은 선물_충격적인 얕은 복사 점수 : 1091 (+7) 최대 소요시간 : 38.23ms 이게 진짜 코테문제였으면 풀다가 멘탈 터졌을 난이도 ^_ㅠ 왜 1단계인걸까 1. 시간 초과를 우려해서 너무 로직을 오래 고민한 점 2. 막상 계획을 다 짜놓고도 배열 순환이 중첩되면 마음이 불안해서 다시 고민한 점 이 두가지 때문에 거의 나흘을 풀었던 문제다. 막상 채점하기 누르니 금방 성공해버려서 놀람. 일단 주석으로 계획을 짜고 문제를 풀어버린 뒤 시간 절약을 고민해보자ㅜㅠ function solution(friends, gifts) { let max = 0; // 리턴할 최대값, 코테 상 answer let frhash = {}; // friend 배열을 hash화 friends.forEach((friend)=> frhash[friend] .. 2024. 3. 12. [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. [JS] 붕대감기 (해설포함) 테스트케이스 최대 소요시간 : 0.20ms 문제 요약 //1초에 x만큼 회복하고, t를 채우면 y가 추가됨 bandage = [시전시간 t, 초당회복력x, 추가회복량 y] health = 최대체력 attacks = [ [공격시간,피해량], [공격시간, 피해량] ...] 제출답안 function solution(bandage, health, attacks) { let nowhealth = health - attacks[0][1]; if (nowhealth health) ? health : nowhealth; nowhealth -= attacks[i][1]; if (nowhealth 2024. 3. 1. 이전 1 2 3 다음 728x90