본문 바로가기

알고리즘72

Programmers - 불량 사용장(Python) https://programmers.co.kr/learn/courses/30/lessons/64064?language=python3 코딩테스트 연습 - 불량 사용자 개발팀 내에서 이벤트 개발을 담당하고 있는 "무지"는 최근 진행된 카카오이모티콘 이벤트에 비정상적인 방법으로 당첨을 시도한 응모자들을 발견하였습니다. 이런 응모자들을 따로 모아 불량 programmers.co.kr 풀이 유저 ID를 불량 아이디 개수에 맞게 조합하여 탐색 - 매칭되는 유저와 불량 아이디의 길이가 같아야함 - 불량 사용자와 유저의 문자를 비교 - 불량 사용자의 문자가 '*'이 아니라면 유저와 같은 문자여야함 * 위의 조건에 부합하고 현재 조합된 유저 아이디가 List에 없다면 List에 추가 from itertools impor.. 2021. 10. 4.
Programmers - 복서 정렬하기(C++) https://programmers.co.kr/learn/courses/30/lessons/85002 코딩테스트 연습 - 6주차_복서 정렬하기 복서 선수들의 몸무게 weights와, 복서 선수들의 전적을 나타내는 head2head가 매개변수로 주어집니다. 복서 선수들의 번호를 다음과 같은 순서로 정렬한 후 return 하도록 solution 함수를 완성해주세요 programmers.co.kr 풀이 복서의 순서를 정렬하기 위한 기준과 우선 순위, 각 기준에서 전후가 결정나지 않으면 다음 기준으로 비교 1. 승률 2. 자신보다 무거운 선수를 이긴 횟수 3. 몸무게 4. 번호 복서마다 승률, 자기보다 무거운 선수를 이긴 횟수를 계산 - 승률의 경우 복서마다 ('W'의 갯수) / ('W', 'L'의 갯수) x .. 2021. 10. 4.
Programmers - 모음사전(Python) https://programmers.co.kr/learn/courses/30/lessons/84512?language=python3# 코딩테스트 연습 - 5주차_모음사전 사전에 알파벳 모음 'A', 'E', 'I', 'O', 'U'만을 사용하여 만들 수 있는, 길이 5 이하의 모든 단어가 수록되어 있습니다. 사전에서 첫 번째 단어는 "A"이고, 그다음은 "AA"이며, 마지막 단어는 "UUUUU"입니 programmers.co.kr 풀이 최대 길이는 5로 고정, 각 칸마다 5개의 알파벳이 들어올 수 있음 경우의 수?, 수학적 풀이가 필요함 5개의 칸의 "AAAE"의 경우 "A -> AA -> AAA -> AAAA"까지인 1+1+1+1=4에서 "AAAAA"~"AAAAU"의 5 뿐만 아니라 "AAAAU -> .. 2021. 9. 29.
BOJ 3190 - 뱀(C++) https://www.acmicpc.net/problem/3190 3190번: 뱀 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임 www.acmicpc.net 풀이 Queue를 이용하여 뱀의 이동에 따른 머리의 위치정보를 계속 갱신 Queue는 FIFO(First In First Out)으로 Queue의 첫부분은 꼬리에 대한 정보, Queue의 끝부분은 머리에 대한 정보를 담음 1. 뱀 머리의 새로운 위치 계산 - 현재 뱀의 머리(Queue.back())와 방향 정보로 새로운 위치를 계산 - 계산한 위치가 격자를 벗어나거나 뱀의 몸에 부딪히면 게임 끝(retu.. 2021. 9. 29.
Programmers - 로또의 최고 순위와 최저 순위(C++) https://programmers.co.kr/learn/courses/30/lessons/77484 코딩테스트 연습 - 로또의 최고 순위와 최저 순위 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호 programmers.co.kr 풀이 입력 값으로 1~45까지의 숫자와 알아볼수 없는 번호 0이 있음 결과 순위에 반영되는 변수로 0의 개수와, 맞춘 숫자의 개수를 파악해야함 - 최고 순위(0의 개수, 맞춘 숫자의 개수) - 최대로 맞췄다는 가정이므로 0의 개수만큼 추가로 맞췄다고 가정 - 0의 개수 + 맞춘 숫자의 개수가 2미만이면 6등, 그 외.. 2021. 9. 29.
Programmers - 최소직사각형(C++) https://programmers.co.kr/learn/courses/30/lessons/86491?language=cpp 코딩테스트 연습 - 8주차 [[10, 7], [12, 3], [8, 15], [14, 7], [5, 15]] 120 [[14, 4], [19, 6], [6, 16], [18, 7], [7, 11]] 133 programmers.co.kr 풀이 명함을 90도 회전하여 보관할 수도 있으므로 가로길이, 세로길이가 고정적이지 않음 가로길이->세로길이, 세로길이->가로길이로 변경하여 보관할 수 있음 - vector의 요소마다 {큰 값, 작은 값}의 형식으로 변경 - vector의 각 요소의 0번째, 1번째값의 최대값을 구함 -> 요건을 만족하는 지갑의 사이즈 #include #include.. 2021. 9. 29.
Programmers - 퍼즐 조각 채우기(C++) ≠https://programmers.co.kr/learn/courses/30/lessons/84021 코딩테스트 연습 - 3주차_퍼즐 조각 채우기 [[1,1,0,0,1,0],[0,0,1,0,1,0],[0,1,1,0,0,1],[1,1,0,1,1,1],[1,0,0,0,1,0],[0,1,1,1,0,0]] [[1,0,0,1,1,0],[1,0,1,0,1,0],[0,1,1,0,1,1],[0,0,1,0,0,0],[1,1,0,1,1,0],[0,1,0,0,0,0]] 14 [[0,0,0],[1,1,0],[1,1,1]] [[1,1,1],[1,0,0],[0,0,0]] 0 programmers.co.kr 풀이 각 조각간의 비교만 하면 됨 1. 퍼즐과 빈 공간 나누기(BFS), 위치 정보 변환 ex 2. 각 조각 비교 2-1... 2021. 9. 24.
BOJ 2467 - 용액(C++) https://www.acmicpc.net/problem/2467 2467번: 용액 첫째 줄에는 전체 용액의 수 N이 입력된다. N은 2 이상 100,000 이하의 정수이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 오름차순으로 입력되며, 이 수들은 모두 - www.acmicpc.net 풀이 정렬된 상태로 입력되기 때문에 index가 늘어날수록 값이 커짐 0과 size(arr)-1를 left와 right로 저장하여 투포인터 구현 각 탐색마다 (left+right)의 절대값과 MIN값 비교/갱신 #include #include using namespace std; int N; int arr[100001]; int main() { cin >> N; for (int i = 0; .. 2021. 9. 15.
Programmers - 직업군 추천하기 https://programmers.co.kr/learn/courses/30/lessons/84325?language=python3 코딩테스트 연습 - 4주차_직업군 추천하기 개발자가 사용하는 언어와 언어 선호도를 입력하면 그에 맞는 직업군을 추천해주는 알고리즘을 개발하려고 합니다. 아래 표는 5개 직업군 별로 많이 사용하는 5개 언어에 직업군 언어 점수를 부 programmers.co.kr 풀이 직업군 마다 탐색/확인 테이블의 요소별로 split ->info info 탐색중에 languages에 있는 언어에 대해 점수 계산후 scores리스트에 담아줌 - info[0]의 직업군의 점수 += (6-info_index) x 선호도 scores중에 최대값과 같은 직업군들만 따로 사전순 정렬하여 0번째 직업군.. 2021. 9. 15.