알고리즘 150

[프로그래머스 | Lv2] 순위 검색 (Python) - 2021 KAKAO BLIND RECRUITMENT

https://school.programmers.co.kr/learn/courses/30/lessons/72412 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 각 info에 대해 탐색될 수 있는 모든 경우의 수를 만들어준다. 예를 들어 [java, backend, junior, pizza]의 선택을 가진 사람이 있다면, [java, backend, junior, pizza], [-, backend, junior, pizza], [java, -, junior, pizza], ... [-, -, -, -] 👆위의 모든 경우를 만들어주는 것이다. 그 후 qu..

[프로그래머스 | Lv2] 메뉴 리뉴얼 (Python) - 2021 KAKAO BLIND RECRUITMENT

https://school.programmers.co.kr/learn/courses/30/lessons/72411 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr orders에서 중복을 포함하지 않는 조합으로 course에 해당하는 수만큼의 문자열을 뽑아낸다. 파이썬에서 조합을 이용하면 원소를 튜플로 반환하기 때문에 이를 리스트로 변환 후 정렬해주고 문자열로 변환한다. 그리고 result 딕셔너리에 {"문자열" : 해당 문자열이 나온 개수}로 저장해줬다. result를 돌면서 최댓값을 뽑아낸다. 먼저 2명 이상의 손님에게서 주문이 들어온 건만 포함해야 하며..

[프로그래머스 | Lv2] 거리두기 확인하기 (Python) - 2021 카카오 채용연계형 인턴십

https://school.programmers.co.kr/learn/courses/30/lessons/81302 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 대기실은 5개이고, 5*5 크기로 고정된 사이즈로 주어졌기 때문에 구현이 까다롭지 않은 문제였다. 응시자들끼리는 맨해튼 거리가 2 이하로 앉지 말아야 하는데, 그 사이에 파티션이 존재하는 경우 앉을 수 있다. 입력된 배열을 대기실 별로 나누어 bfs를 수행했다. 먼저 P인 곳의 좌표를 모두 큐에 넣는다. 큐에서 하나씩 빼서 상하좌우를 돌면서 P인 곳이 존재하면 0을 리턴하고, (자리 사이가 맨해튼..

[프로그래머스 | Lv2] 양궁대회 (Python) - 2022 KAKAO BLIND RECRUITMENT

https://school.programmers.co.kr/learn/courses/30/lessons/92342 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr BFS를 이용하여 풀었다. 화살을 쏠 수 있는 경우 (남은 화살이 존재) 10점부터 차례대로 화살을 쏜다. 쏠 수 있는 화살은 어피치보다 1발 더 쏘기 or 0발 쏘기이다. deque에 쏠 수 있는 화살 리스트를 모두 갱신하여 저장한다. 더이상 쏠 화살이 없는 경우 10~1점까지 모든 화살을 다 쐈고, 남은 화살이 존재할 경우 0점에 남은 화살을 몰아준다. 라이언과 어피치의 점수를 계산하여 둘의 ..

[프로그래머스 | Lv2] k진수에서 소수 개수 구하기 (Python) - 2022 KAKAO BLIND RECRUITMENT

https://school.programmers.co.kr/learn/courses/30/lessons/92335 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr n을 k진수로 변환하고(n이 0이 될 때까지 k로 나눈다.), 0을 포함하지 않는 수만 분리하여(split('0')) 소수인지 판별해주면 된다. 처음엔 findPrime에서 반복문의 범위를 (2, num//2)로 설정해줬었는데, tc1에서 시간 초과가 났다. 그래서 범위를 다시 (2, 제곱근+1)로 설정해줬다. # 프로그래머스 92335: k진수에서 소수 개수 구하기 (2022 KAKAO BLIN..

[프로그래머스 | Lv2] 주차 요금 계산 (Python) - 2022 KAKAO BLIND RECRUITMENT

https://school.programmers.co.kr/learn/courses/30/lessons/92341 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 알고리즘 자체를 생각하는건 쉬웠으나.. 문자열 처리가 까다로운 문제였다. 먼저 딕셔너리에 {차량 번호: 시간(시:분 리스트)}으로 저장하고, 반복문을 통해 딕셔너리를 순회하면서 누적 주차 시간을 계산해줬다. time 변수는 각 입차/출차에 대한 시간이고, total 변수는 누적 주차 시간이다. time에 딕셔너리에 저장되어 있는 시간을 두개씩 짝지어서 시간을 계산해주고, 이를 total에 더했다...

[프로그래머스 | Lv2] 택배 배달과 수거하기 (Python) - 2023 KAKAO BLIND RECRUITMENT

https://school.programmers.co.kr/learn/courses/30/lessons/150369 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr d_temp, p_temp 변수를 만들어주고 집을 끝에서부터 돌면서 택배를 배달/수거하는 대로 값을 증가시켰다. 두 변수가 cap보다 크다면 for문을 멈추고 n값을 갱신하여 다시 반복문을 돌도록 해주었다. # 실패 # 프로그래머스 150369: 택배 배달과 수거하기 (2023 KAKAO BLIND RECRUITMENT) def solution(cap, n, deliveries, pickups)..

[프로그래머스 | Lv2] 두 큐 합 같게 만들기 (Python) - 2022 KAKAO TECH INTERNSHIP

https://school.programmers.co.kr/learn/courses/30/lessons/118667 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 두 큐의 합을 2로 나눈 값이 홀수이면 바로 -1을 리턴한다. (두 큐의 합을 같게 만들 수 없다.) 두 큐의 합을 2로 나눈 값을 target으로 설정해주고, 큐1의 합을 left로 설정해준다. 그 후 반복문을 돌면서 left target이면 반대로 큐1에서 원소를 꺼내 큐2에 넣어주고, left == target이면 그대..

[프로그래머스 | Lv2] 이모티콘 할인행사 (Python) - 2023 KAKAO BLIND RECRUITMENT

https://school.programmers.co.kr/learn/courses/30/lessons/150368 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 완전탐색을 이용해서 풀었다. 중복순열을 이용해서 할인 가짓수를 먼저 계산해주고, 반복문을 통해 각각 users를 순회하면서 가격 >= 구매액이면 플러스 가입자를 늘리고, 가격 < 구매액이면 판매액을 늘려 조건에 맞는 최댓값을 리턴해주면 된다. # 프로그래머스 150368: 이모티콘 할인행사 (2023 KAKAO BLIND RECRUITMENT) from itertools import produc..

[프로그래머스 | Lv2] 롤케이크 자르기 (Python)

https://school.programmers.co.kr/learn/courses/30/lessons/132265 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 처음에 단순하게 푼 코드 차례대로 리스트를 나누면서 set으로 만들어 길이를 비교했다. # 프로그래머스 132265: 롤케이크 자르기 def solution(topping): answer = 0 s = round(len(set(topping)) // 2) for i in range(s, len(topping)-s+1): if len(set(topping[:i])) == len(set(toppin..