코딩 테스트
-
그리디 알고리즘 (Greedy Algorithm)코딩 테스트/코딩 테스트 알고리즘 2022. 10. 26. 12:03
01. 그리디 알고리즘이란? 현재 상황에서 가장 좋은 것만 고르는 방식이다. 탐욕법이라고도 한다. 사전에 특정 알고리즘을 공부하지 않아도 풀이를 떠올릴 수 있는 경우가 많다. 02. 그리디 알고리즘의 예시 : 거스름돈 문제 내가 가게의 계산 직원이라고 생각했을 때, 거스름돈이 500원, 100원, 50원, 10원 단위로 있다고 생각하자. 손님에게 거슬러 줘야 할 돈이 N원일 때, 가장 적은 동전을 써서 거슬러줄 수 있는 경우는? 전형적인 그리디 알고리즘의 예시 "가장 큰 화폐 단위부터" 돈을 거슬러 주면 됨 1370원을 거슬러 줘야 한다고 가정할 때 가장 큰 단위인 500원을 2번 거슬러 준다. (남은 돈 370원) 두 번째 큰 단위인 100원을 3번 거슬러 준다 (남은 돈 70원) 세 번째 큰 단위인 ..
-
[프로그래머스] Level2 - k진수에서 소수 구하기코딩 테스트 2022. 10. 6. 12:50
1. 문제 설명 Link : https://school.programmers.co.kr/learn/courses/30/lessons/92335 2. 나의 풀이 #include #include #include #include using namespace std; string ToNotation(int number, int notation) { stack stk; while(number >= 1) { stk.push(number % notation); number = number / notation; } string ret = ""; while (!stk.empty()) { ret += to_string(stk.top()); stk.pop(); } return ret; } bool IsPrime(long l..
-
[프로그래머스] Level2 - 주차 요금 계산코딩 테스트 2022. 10. 5. 14:20
1. 문제 설명 Link : https://school.programmers.co.kr/learn/courses/30/lessons/92341 2. 나의 풀이 #include #include #include #include #include using namespace std; struct ParkingData { int recentTime; int acc; bool parked; ParkingData() : recentTime(0), acc(0), parked(false) { } }; vector solution(vector fees, vector records) { int baseTime = fees[0]; int baseFee = fees[1]; int unitTime = fees[2]; int un..
-
[프로그래머스] Level2 - 두 큐 합 같게 만들기코딩 테스트 2022. 9. 29. 14:18
1. 문제 설명 Link : https://school.programmers.co.kr/learn/courses/30/lessons/118667 2. 나의 풀이 #include #include #include using namespace std; typedef unsigned long long ULL; int solution(vector queue1, vector queue2) { ULL sum1 = accumulate(queue1.begin(), queue1.end(), 0); ULL sum2 = accumulate(queue2.begin(), queue2.end(), 0); // 두 수의 합이 홀수인 경우 if ((sum1 % 2 == 0 && sum2 % 2 == 1) || (sum1 % 2 == ..
-
[프로그래머스] Level1 - 신고 결과 받기코딩 테스트 2022. 9. 27. 12:50
1. 문제 설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의 유저를 신고할 수 있습니다. 신고 횟수에 제한은 없습니다. 서로 다른 유저를 계속해서 신고할 수 있습니다. 한 유저를 여러 번 신고할 수도 있지만, 동일한 유저에 대한 신고 횟수는 1회로 처리됩니다. k번 이상 신고된 유저는 게시판 이용이 정지되며, 해당 유저를 신고한 모든 유저에게 정지 사실을 메일로 발송합니다. 유저가 신고한 모든 내용을 취합하여 마지막에 한꺼번에 게시판 이용 정지를 시키면서 정지 메일을 발송합니다. 다음은 전체 유저 목록이 ["muzi", "frodo", "apeach", "neo"]이고, k ..
-
[프로그래머스] Level1 - 완주하지 못한 선수코딩 테스트 2022. 9. 20. 10:42
1. 문제 설명 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요. 제한사항 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다. completion의 길이는 participant의 길이보다 1 작습니다. 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다. 참가자 중에는 동명이인이 있을 수 있습니다. participant completion return ["leo, "kiki", ..
-
[프로그래머스] Level1 - 다트 게임코딩 테스트 2022. 9. 15. 13:36
1. 문제 설명 카카오톡 게임별의 하반기 신규 서비스로 다트 게임을 출시하기로 했다. 다트 게임은 다트판에 다트를 세 차례 던져 그 점수의 합계로 실력을 겨루는 게임으로, 모두가 간단히 즐길 수 있다. 갓 입사한 무지는 코딩 실력을 인정받아 게임의 핵심 부분인 점수 계산 로직을 맡게 되었다. 다트 게임의 점수 계산 로직은 아래와 같다. 다트 게임은 총 3번의 기회로 구성된다. 각 기회마다 얻을 수 있는 점수는 0점에서 10점까지이다. 점수와 함께 Single(S), Double(D), Triple(T) 영역이 존재하고 각 영역 당첨 시 점수에서 1제곱, 2제곱, 3제곱 (점수1 , 점수2 , 점수3 )으로 계산된다. 옵션으로 스타상(*) , 아차상(#)이 존재하며 스타상(*) 당첨 시 해당 점수와 바로 ..
-
[프로그래머스] Level1 - 문자열 내 마음대로 정렬하기코딩 테스트 2022. 9. 11. 13:45
1. 문제 설명 문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다. strings는 길이 1 이상, 50이하인 배열입니다. strings의 원소는 소문자 알파벳으로 이루어져 있습니다. strings의 원소는 길이 1 이상, 100이하인 문자열입니다. 모든 strings의 원소의 길이는 n보다 큽니다. 인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치합니다. 문자열이 저장된 벡터를 함수 인자로 주어진 n 위치의 문자의 알파..