분류 전체보기 248

[algostop] 고대어 사전 (c++)

출처 : algospot.com :: DICTIONARY algospot.com :: DICTIONARY 고대어 사전 문제 정보 문제 아마추어 고고학자인 일리노이 존스는 시카고 근교에서 고대 문명의 흔적을 찾아냈습니다. 그 흔적 중에는 이 언어의 사전도 포함되어 있었는데, 이 사전에 포함된 www.algospot.com 풀이 방법 각 단어를 비교해가며 먼저 나온 단어랑 바로 뒤에 나온 단어랑 앞글자 부터 비교해 가며 다른 글자가 나올시 앞 단어의 철자에서 뒤 단어의 철자로 가는 간선을 추가해주는 작업을 해서 그래프를 만든다. 그리고 위상 정렬을 이용해야 한다 위상정렬은 dfs에서 마지막에 재귀호출이 끝날 때 현재 지점을 반환해주면서 마지막에 반환된 값을 뒤집어 주면 된다. 만약 그래프가 DAG가 아니라면..

Algorithm 2021.02.22

[algospot] 변화하는 중간 값 (c++)

출처 : algospot.com :: RUNNINGMEDIAN algospot.com :: RUNNINGMEDIAN 변화하는 중간값 문제 정보 문제 한 수열의 중간값(median)은 이 수열을 정렬했을 때 가운데 오는 값입니다. 예를 들어 {3,1,5,4,2}를 정렬했을 때 가운데 오는 값은 3이지요. 수열의 길이가 짝수일 때 www.algospot.com 풀이 방법 문제의 핵심은 우선순위 큐를 두개를 이용하여 중간 값을 찾는 것이다. 하나는 최대 힙 하나는 최소 힙으 이용하여 최대 힙의 최대 원소가 최소 힙의 최소 원소보다 작거나 같게 만들고, 최대 힙의 원소 개수가 최소 힙의 원소 개수 보다 +1 크거나 같게 유지시켜주며 원소를 삽입시키면 중간 값은 최대 힙의 최댓값이 될 것이다. #include #..

Algorithm 2021.02.15

[프로그래머스] 키패드 누르기 (Python)

출처 : 코딩테스트 연습 - 키패드 누르기 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 키패드 누르기 [1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL" [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR" [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] "right" "LLRLLRLLRL" programmers.co.kr 풀이 방법 *, 0, #은 먼저 10, 11, 12로 매칭을 시킨다. 1, 4, 7은 따로 left_num이라는 배열에 저장을 해두고 3, 6, 9는 right_num이라는 배열에 저장해두고 numbers 배열을 돌아가며 숫자가 각 배열에 있을 시 answer..

Algorithm 2021.02.15

[프로그래머스] 3진법 뒤집기 (Python)

출처 : 코딩테스트 연습 - 3진법 뒤집기 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 3진법 뒤집기 자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요. 제한사항 n은 1 이상 100,000,000 이하인 자연수 programmers.co.kr 풀이 방법 십진법으로 표현된 수를 3진법으로 바꾸는 방법은 십진법 수를 3으로 몫이 0이 될 때까지 나눠가며 나머지를 큐에 넣은 후 하나씩 빼면 3진법으로 바꿀 수 있다. 문제에서 삼진법으로 만든 후 뒤집은 후 다시 십진법으로 만들어야 하므로 큐가 아닌 처음부터 스택에 나머지를 넣은 후 pop 을 해준후 다시 십진법으로 만..

Algorithm 2021.02.14

[algospot] 너드인가, 너드가 아닌가? (c++)

출처 : algospot.com :: NERD2 algospot.com :: NERD2 너드인가, 너드가 아닌가? 2 문제 정보 문제 대 성황이었던 지난 알고스팟 연간 모의고사 이후 프로그래밍 대회의 열기는 날로 뜨거워져 올해는 10만명이 넘는 사람들이 참가 신청을 할 것으로 www.algospot.com 풀이 방법 이 문제의 중요한 해결책은 문제 수와 라면 그릇 수를 좌표평면에 그려보는 것이다. 그려보게 되면 현재까지 등록되어 있는 너드들이 계단식으로 되어있다 즉 x 좌표가 작으면 y가 커야 하므로 오른쪽으로 갈수록 x좌표가 증가하고 y좌표는 감소하는 계단식이다. 여기서 새로운 사람이 추가되면 너드인지 아닌지 판별하기 위해 자신보다 x좌표가 큰 쪽만 보면 된다 왜냐하면 자신보다 x좌표가 작은 쪽은 x좌..

Algorithm 2021.02.14

[프로그래머스] 모의고사 (Python)

출처 : programmers.co.kr/learn/courses/30/lessons/42840 코딩테스트 연습 - 모의고사 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 programmers.co.kr 풀이 방법 완전 탐색문제로 1번, 2번, 3번 학생들은 자신의 규칙에 따라 반복해서 찍는다. ex) 1번은 1, 2, 3, 4, 5 반복 그러므로 답(answers)을 하나씩 돌아가며 answers의 인덱스에 각 학생의 반복하는 답의 개수를 나눈 나머지를 각각의 학생들의 답 배열에 넣어주어 나온 값과 answers를 비교하여 일치하면 score을 +1 씩 해주어서 점..

Algorithm 2021.02.11

[프로그래머스] 체육복 (c++)

출처 : 코딩테스트 연습 - 체육복 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 체육복 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번 programmers.co.kr 풀이 방법 map 을 이용하여 체육복 여분이 있는 학생의 번호와 여분 여부를 저장하고 lostArr를 학생 수 만큼 할당하여 인덱스를 학생 번호로 벡터의 값을 잃어버림 유무로 잡아 저장하였다. 우선 여분을 가지고 있는데 잃어버린 학생을 먼저 처리 하였다 그 후 여분을 가지고 있는 학생의 앞 학생이 체육복을 잃어버렸으면 그 학생 우선 여분을 주고 만약 앞 학생이 잃어버리지 않았다..

Algorithm 2021.02.10

[프로그래머스] 완주하지 못한 선수 (c++)

출처 : 코딩테스트 연습 - 완주하지 못한 선수 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr #include #include #include using namespace std; string solution(vector participant, vector completion) { string answer = ""; sort(completion.begin(), completion.end()); sort(participant.begin()..

Algorithm 2021.02.07