알고리즘/프로그래머스(51)
-
Level 2️⃣ - 택배 배달과 수거하기(2023 KAKAO BLIND RECRUITMENT)
https://school.programmers.co.kr/learn/courses/30/lessons/150369 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 접근하기핵심 요구사항은 "최소 이동 거리"이다. 예시를 분석하면서 문제를 이해하는 것이 매우 중요하다. 1. 먼저 배달을 할 때는 가장 멀리 있는 곳부터 배달을 완료해야한다.그렇지 않으면 또 다시 먼 거리를 이동해야하기 때문에 "최소 이동 거리"를 구하기에는 비효율적이기 때문이다.그런데 고려해야할 부분이 하나 더 있다. 바로 빈 상자를 픽업해야한다는 것이다. 예를 들어 다음과 같이 입력값이 ..
2024.05.26 -
Level 2️⃣ - 순위 검색(2021 KAKAO BLIND RECRUITMENT)
https://school.programmers.co.kr/learn/courses/30/lessons/72412 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr문제 접근핵심 요구사항각 query 조건에 맞는 인원이 몇 명인지 반환한다.설계1. Info를 통해 지원자 정보 테이블을 이차원 배열로 구현한다.2. query를 순회하면서, 각 query 조건에 맞는 사람을 카운팅한다. 문자열 관련 문제라고 생각하고 O(n^2)으로 접근했다. 정확성은 모두 통과를 했지만 효율성이 0이 나왔다. query의 최대값이 10만이고 Info의 최대값이 5만인데 query를 ..
2024.05.25 -
Level 2️⃣ - 양궁대회
https://school.programmers.co.kr/learn/courses/30/lessons/92342 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr🚀문제 접근핵심 요구사항라이언이 가장 큰 점수차로 이기는 경우를 구해야한다. 설계1. 라이언이 과녁을 맞추는 경우의 수를 구한다. - 경우의 수를 중복순열을 이용해서 구한다. 2. 라이언이 과녁을 맞춘 경우의 수를 토대로 라이언의 Info를 만든다. 그리고 어피치와 라이언의 Info를 비교해서 각각의 점수를 계산한다. 만약 라이언이 이기는 경우라면 라이언의 점수와 라이언의 Info를 저장한다. 3...
2024.05.24 -
Level 2️⃣ - 이모티콘 할인행사(2023 KAKAO BLIND RECRUITMENT)
https://school.programmers.co.kr/learn/courses/30/lessons/150368 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr🚀문제 접근요구 사항이모티콘에 할인율을 적용해 구매가능한 모든 이모티콘을 구매했을 때, 구매 비용이 일정 기준을 넘어가면 서비스를 구독하고 그러지 않으면 이모티콘을 구매해서 최대한 많은 구독자를 늘린다. 문제 설계1. 각각의 이모티콘마다 할인율을 적용한다.- 적용할 수 있는 할인율은 10, 20, 30, 40퍼센트이다.- 이모티콘의 갯수가 m개라면 중복순열을 이용해서 m개의 적용할 수 있는 할인율을..
2024.05.24 -
Level2️⃣ - 후보키(2019 KAKAO BLIND RECRUITMENT)
https://school.programmers.co.kr/learn/courses/30/lessons/42890 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 접근입력값의 최대범위가 작기 때문에 조합을 활용한 완전탐색을 사용해도 되겠다고 판단했다.학번이름과목학년100ryanmusic2200apeachmath2300tubecomputer3 학번, 이름, 과목, 학년과 같이 릴레이션의 속성을 조합을 활용해서 키를 구한다. 이때 후보키 리스트에서 최소성을 위배하는 키라면 제외한다. 만약 최소성을 위배하지 않았다면 유일성을 체크해야한다. 해당 키로 튜플을 유..
2024.05.23 -
Level2️⃣ - 점 찍기
https://school.programmers.co.kr/learn/courses/30/lessons/140107 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr문제 접근두 점 사이의 거리 공식을 활용해서 문제를 해결하고자 했다. function solution(k, d) { let ret = 0; for(let x = 0; x 하지만 시간초과가 나왔다. 최악의 경우에 O(N^2)이기 때문이다.이중for문을 사용하지 않고 구현하는 방법을 고민하다가 다른 블로그의 풀이를 참고했다. x가 0, 1, 2, 3 ... 하나씩 증가할 때마다 최대한 찍을 ..
2024.05.23