목록Programmers (190)
GitHubSeob
문제 https://programmers.co.kr/learn/courses/30/lessons/42586 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 programmers.co.kr 문제풀이 반복문을 통해 progresses와 speeds를 탐색한다. 변수day를 선언하여 해당 작업이 걸리는 일수를 저장한다. 해당 일에 작업을 할 수 있으면 큐에 저장한다. 해당 일에 작업을 할 수 없으면 큐에 있는 작업의 개수를 answer에 push_back한다. 그 다음 해당 일에 작업하지 못한 작업은 얼마나 걸리는지 계산을 하여 day의 ..

문제 https://programmers.co.kr/learn/courses/30/lessons/12899 코딩테스트 연습 - 124 나라의 숫자 programmers.co.kr 문제풀이 숫자 3개 1, 2, 4를 이용하여 해당 숫자를 변환하는 문제이다. 단순히 3진법으로 변환하기에는 3일 때 몫은 1이고 나머지가 0인데 124 나라의 수로는 4라서 조금 바꿔야 한다. 3의 배수일 때 answer에 4를 더하고 n에 -1을 뺀다. 그 외의 경우는 n을 3으로 나눈 나머지를 string형으로 만들어 더하면 된다. 그리고 마지막에는 reverse를 통해 역순으로 바꿔줘야한다. 코드 #include #include #include using namespace std; string solution(int n) ..

문제 https://programmers.co.kr/learn/courses/30/lessons/62048 코딩테스트 연습 - 멀쩡한 사각형 가로 길이가 Wcm, 세로 길이가 Hcm인 직사각형 종이가 있습니다. 종이에는 가로, 세로 방향과 평행하게 격자 형태로 선이 그어져 있으며, 모든 격자칸은 1cm x 1cm 크기입니다. 이 종이를 격자 선을 programmers.co.kr 문제풀이 주어진 w와 h 이용해서 직선의 방정식을 세우고 x값을 넣으면서 y값을 구하고 버림을 한 값을 모두 더한 값에 *2를 한다. 직선의 방정식은 y=-3x/2+12. x가 7이면 12-10.5 = 1.5인데 직선과 겹치는 정사각형은 사용할 수 없으므로 버림을 한 값인 1을 저장한다. x가 6이면 12-9 = 3 ... x가 ..

문제 https://programmers.co.kr/learn/courses/30/lessons/42888 코딩테스트 연습 - 오픈채팅방 오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오 programmers.co.kr 문제풀이 logs는 vector 이다. int에는 입장인지 퇴장인지를 나타내는 0, 1을, string에는 uID를 기록한다. (입장과 퇴장이 string형으로 주어지지만 편의상 0과 1로 나타내기로 함) unordered_map uid의 key는 uID, value에는 닉네임이 저장된다. logs에는 입장, 퇴장을 순서대로 기록한다. for (int id..

문제 https://programmers.co.kr/learn/courses/30/lessons/92334 코딩테스트 연습 - 신고 결과 받기 문제 설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의 programmers.co.kr 문제풀이 unordered_map을 이용하여 형태로 신고당한 ID, 신고당한 횟수인 report_cnt 형태로 신고한 ID, 정지 먹인 횟수인 reporter_cnt를 선언한다. 먼저 erase, unique를 이용하여 중복 신고 내역을 없앤다. (동일한 유저에 대한 신고 횟수는 1회로 처리되므로) for (idx = 0; idx < report.s..

문제 https://programmers.co.kr/learn/courses/30/lessons/42746 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr 문제풀이 https://www.acmicpc.net/problem/16496 백준에 있는 문제와 똑같다. int형으로 들어온 숫자들을 새 벡터에 string형으로 변환하여 push 해준다. 그다음 sort를 compare함수 대로 정렬한다. compare함수는 string a와 string b..

문제 https://programmers.co.kr/learn/courses/30/lessons/42584 코딩테스트 연습 - 주식가격 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 제한사항 prices의 각 가격은 1 이상 10,00 programmers.co.kr 문제풀이 스택을 이용하여 풀었다. stack 를 이용하여 first에는 주식가격을, second에는 인덱스 값을 입력한다. 스택에는 현재 탐색하고 있는 주식가격 이하인 가격들만 들어있어야 한다. 따라서 탐색하고 있는 주식가격 보다 큰 가격들이 있으면 반복문을 통해 모두 pop을 한다. pop을 하면서 인덱스 차이를 ..

문제 https://programmers.co.kr/learn/courses/30/lessons/42587 코딩테스트 연습 - 프린터 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린 programmers.co.kr 문제풀이 deque와 pair를 이용해서 풀었다. deque는 priorities와 몇 번째 인덱스인지 값을 넣어준다. deque({priorities, idx}) value라는 벡터를 만들어 오름차순으로 정렬하여 모든 작업의 중요도를 저장하도록 한다. count는 몇 번째 작업인지, value_f는 deque.front().first의 값을, value_s는..

문제 https://programmers.co.kr/learn/courses/30/lessons/42577 코딩테스트 연습 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조 programmers.co.kr 문제풀이 한 번호가 다른 번호의 맨 앞에 있는 경우가 있는지를 확인하는 문제이다. 전화번호 목록을 크기 순으로 정렬하고, unordered_set을 이용하였다. 전화번호를 맨 앞부터 한 자리씩 str에 더한다. 전화번호가 저장된 unordered_set에서 str이 있는지 확인하고 있다면 바로 false를 return 한다. 끝까지 가도 없으면 현재 전..