전체 글

전체 글

    [Python] for-else와 while-else

    파이썬에서는 조건문 뿐만 아니라, 반복문에서도 else를 쓸 수 있다. for-else for x in [1, 2, 3, 4]: if x % 2: # x가 2의 배수라면 출력 print(x) else: # x가 2의 배수가 아니라면 반복문에서 빠져나감 break else: print("리스트의 원소는 모두 2의 배수입니다") 반복문을 break 하는 경우, for 문 다음의 else문이 실행되지 않는다. 다시 말해, 반복문 도중 break하지 않고 끝까지 반복되었을 때 else문이 실행된다. break를 사용하여 반복문을 빠져나왔는지, 아니면 반복이 완료되어 반복문을 빠져나왔는지 확인할 때 사용할 수 있다. while 문도 마찬가지의 원리로 사용할 수 있다.

    [Programmers] 스킬트리 - JavaScript

    [Programmers] 스킬트리 - JavaScript

    문제 https://school.programmers.co.kr/learn/courses/30/lessons/49993 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 풀이 function solution(skill, skill_trees) { var answer = 0; for(let skill_tree of skill_trees){ let stack = [...skill]; let isPossible = true; for(let v of skill_tree){ if(stack.includes(v)){ if(stack[0] === v) stack.sh..

    [Programmers] 기능개발 - JavaScript

    [Programmers] 기능개발 - JavaScript

    문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 풀이 function solution(progresses, speeds) { var answer = []; let days = progresses.map((progress, idx) => Math.ceil((100 - progress) / speeds[idx])); let prev = days[0]; let sumOfFunc = 1; for(let i = 1; i < days.length; i++){ let cur = days[i]; if(prev < cur){ answer.push(sumOfFunc..

    [Programmers] 점프와 순간 이동 - JavaScript

    [Programmers] 점프와 순간 이동 - JavaScript

    문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 풀이 function solution(n) { if(n === 1) return 1; if(n % 2 === 0) return solution(n / 2); else return solution((n - 1) / 2) + 1; } 건전지 사용량을 최소화하려면 최대한 순간이동을 많이 해야한다. 그래서 이동해야하는 위치 n이 짝수인지, 홀수인지에 따라 나눠 처리하도록 했다. 위치 n이 짝수인 경우 예를 들어, n이 8이라면 처음위치인 0→1 한칸 점프, 1→2 순간이동, 2→4 순간이동, 4→8 순간이동..

    [Programmers] N개의 최소공배수 - JavaScript

    [Programmers] N개의 최소공배수 - JavaScript

    문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 풀이 function getGCD(a, b) { let gcd = 1; if(a % b === 0) gcd = b; else if(b % a === 0) gcd = a; else{ for(let i = 2; i

    [Programmers] 캐시 - JavaScript

    [Programmers] 캐시 - JavaScript

    문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 풀이 function solution(cacheSize, cities) { var answer = 0; let cache = []; if (cacheSize === 0) return cities.length * 5; for(let city of cities){ city = city.toLowerCase(); let idx = cache.indexOf(city); if (idx !== -1){ cache.splice(idx, 1); cache.push(city); answer += 1; } else{ ..

    [Programmers] H-Index - JavaScript

    [Programmers] H-Index - JavaScript

    문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 풀이 function solution(citations) { var answer = 0; citations.sort((a, b) => b - a); for (let i = 0; i = i + 1) answer++; else break; } return answer; } 문제가 이해가 제법 어려웠다. 문제 이해하다가 잠시 놓치면 뇌가 살짝 꼬이는 기분이였다. 2학년 때 자료구조 시간에 코테 볼 때도 이 문제 있었는데 그때도..

    [Programmers] 피보나치 수 - JavaScript

    [Programmers] 피보나치 수 - JavaScript

    문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 풀이 function solution(n) { let arr = [0, 1]; for(let i = 2; i < n + 1; i++){ arr.push((arr[i-2] + arr[i-1]) % 1234567); } return arr[n]; } 먼저, 가장 익숙한 풀이법인 재귀로 풀었지만 시간초과가 났다. 불필요한 연산이 중복되어 시간복잡도와 함수 호출 스택에 무리가 많이가기 때문. 그래서 반복문으로 풀이 방법을 바꿨지만, 계속 답이 틀려서 답답했다. 검색해보니 n번째에만 1234567을 나눠주는 ..