LV2 [KAKAO] 후보키
·
프로그래머스
문제 https://school.programmers.co.kr/learn/courses/30/lessons/42890 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 처음에 후보키 개념이 애매모호해서, 그것부터 정리하고 문제풀이를 시작했다. 문제의 핵심은 유일성보다는 최소성을 어떻게 판별할것인가, 였던거 같다. 최소성을 판별하기 위해서는 부분집합을 활용하면 된다. 만약 속성이 '학번' , '이름', '학년' 이라고 가정해보자. 이 때 '학번' 하나만으로도 후보키가 될 경우, '학번' 이 특정 집합의 부분집합이 되는 순간 최소성을 위반한다. '학번' ..
LV2 [KAKAO] n진수 게임
·
프로그래머스
문제 https://school.programmers.co.kr/learn/courses/30/lessons/17687 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 문제를 풀기 위해서는 진법 변환에 대한 기초 지식이 있어야한다. 간단한 예로 로직을 살펴보면 7을 2진수로 나타내보자. 7 / 2 = 3 ... 1 3 / 2 = 1 ... 1 1 / 2 = 0 ... 1 0 / 2 = 0 ... 0 (... 은 나머지를 나타낸다.) 10진수 7을 2진수로 나타내면 1110 이다. n진수로 나타내고 싶을때, 나머지들을 취하면 해당 진법으로 변환시킬 수 ..
LV2 [KAKAO] 순위 검색
·
프로그래머스
문제 https://school.programmers.co.kr/learn/courses/30/lessons/72412 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 문제를 보고서 Dictionary를 사용해야할 거 같았다. 1. 우선 주어진 프로그래밍 언어, 직군 등을 조합하고 모든 부분집합을 Key로 만들어주고 초기화해준다. 2. 이후에 info 리스트를 순회하면서 모든 부분집합을 만들고, 해당하는 Key에 점수를 넣어준다. 3. 마지막에는 query 리스트를 순회하면서 해당 조건에 맞는 Key를 찾고, value (점수들이 들어가있는 list)..
LV2 [KAKAO] 양궁대회
·
프로그래머스
문제 https://school.programmers.co.kr/learn/courses/30/lessons/92342 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 완전탐색으로 풀었다. 문제 풀 때 주의해야하는거는 1. 라이언이 어피치를 이겨야 한다. 2. 이길 때, 가장 큰 점수차로 이겨야한다. 3. 가능하면 작은 점수의 화살을 많이 맞춰 이겨야한다. 이 세가지 요소이다. 따라서 나는 가장 작은 점수부터 맞추는 방식으로 접근했다. 0점부터 -> 10점까지 접근하면서 모든 경우의 수를 체크해본다. (해당 인덱스의 점수를 얻거나, 포기하거나) 이 때..
LV2 [KAKAO] 이모티콘 할인행사
·
프로그래머스
문제 https://school.programmers.co.kr/learn/courses/30/lessons/150368 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 완전탐색을 곁들인 단순 구현문제이다. 최대 7개의 이모지가 들어오는데, 해당 이모지가 할인할 수 있는 모든 경우의 수를 적용시키고 유저와 비교해본다. 그 중에 우리의 목표와 가장 알맞는 값을 가져오면 된다. 어려운 문제는 아니지만, 유의미한 아이디어라고 하면 import itertools 순열이나 조합등을 다루는 itertools 라이브러리의 product를 사용했다면 좀 편하게 풀 ..
LV2 [KAKAO] 택배배달과 수거하기
·
프로그래머스
문제 https://school.programmers.co.kr/learn/courses/30/lessons/150369 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 생각했던 풀이 같은 경우에는, 거리를 줄일려면 가장 먼 택배부터 배달해야한다고 생각했고, 가장 먼곳의 택배 배달을 끝내고, 여분이 남으면 그 앞에 배달위치까지 커버하는 방식으로 진행했다. (실질적으로 배달은 앞에서부터 되나, 뒤에서부터 내가 배달할 수 있는 양을 계산했다.) 수거또한 멀리서부터 할려고 했고, 가장 멀리있는 경우부터 수거하고, 공간이 남으면 앞의 수거목록까지 커버하는 방..