목록분류 전체보기 (370)
GitHubSeob

문제 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://www.acmicpc.net/problem/21942 21942번: 부품 대여장 첫 번째 줄에 부품 대여장에 작성된 정보의 개수 $N$, 대여기간 $L$, 벌금 $F$이 공백으로 구분되어 주어진다. 대여기간 형식은 DDD/hh:mm으로 DDD는 일, hh는 시간, mm은 분을 의미한다. (000/00:00 는 주어 www.acmicpc.net 문제풀이 날짜와 시간을 입력받으면 모두 분으로 바꾼다. string을 substr을 이용하여 각각 월, 일, 시, 분을 파싱 하고 stoll을 통해 long long으로 형 변환을 한다. map을 이용한다. key부분은 pair을 이용해 {이름, 부품}을 입력받고, value에는 시간을 입력받는다. map[{이름, 부품}]값이 비어있으면 빌린 시..

문제 https://www.acmicpc.net/problem/2696 2696번: 중앙값 구하기 첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진다. 각 테스트 케이스의 첫째 줄에는 수열의 크기 M(1 ≤ M ≤ 9999, M은 홀수)이 주어지고, 그 다음 줄부터 이 수열의 원소가 차례대로 주 www.acmicpc.net 문제풀이 multiset을 이용하여 풀었다. 입력받으면 multiset에 집어넣고 홀수번째 수를 입력받을 때마다 iterator을 이용하여 한 칸씩 중앙값을 가리킬 때까지 iterator를 증가시키고 해당 값을 answer에 push 한다. 모든 입력을 받았으면 answer의 크기와 answer의 모든 값들을 출력한다. 코드 #include #include #in..

문제 https://www.acmicpc.net/problem/21939 21939번: 문제 추천 시스템 Version 1 tony9402는 최근 깃헙에 코딩테스트 대비 문제를 직접 뽑아서 "문제 번호, 난이도"로 정리해놨다. 깃헙을 이용하여 공부하시는 분들을 위해 새로운 기능을 추가해보려고 한다. 만들려고 하는 명령 www.acmicpc.net 문제풀이 map과 multiset을 이용한다 multiset은 난이도가 같으면 문제 번호가 높은 순, 난도가 다르면 난이도가 높은 순부터 낮은 수로 정렬하도록 cmp를 따로 만들었다. (내림차순) 문제 번호와 난이도를 입력받으면 multiset, map에 집어넣는다. recommend 1을 입력받으면 iterator가 multiset의 처음을 가리키게 되고 문제..

문제 https://www.acmicpc.net/problem/1302 1302번: 베스트셀러 첫째 줄에 오늘 하루 동안 팔린 책의 개수 N이 주어진다. 이 값은 1,000보다 작거나 같은 자연수이다. 둘째부터 N개의 줄에 책의 제목이 입력으로 들어온다. 책의 제목의 길이는 50보다 작거나 같고 www.acmicpc.net 문제풀이 mapbook을 선언한다. string인 key부분에는 책의 이름을, int인 value 부분에는 책의 개수를 입력한다. 입력을 받으면 book[책 이름]++을 하여 해당 책의 개수를 1 증가시킨다. 그다음 book[책 이름]의 값과 max_count 값을 비교하면서 max_count값을 최댓값으로 유지한다. map은 알아서 정렬되므로 iterator를 이용해 book의 처음..

문제 https://www.acmicpc.net/problem/10546 10546번: 배부른 마라토너 마라토너라면 국적과 나이를 불문하고 누구나 참가하고 싶어하는 백준 마라톤 대회가 열린다. 42.195km를 달리는 이 마라톤은 모두가 참가하고 싶어했던 만큼 매년 모두가 완주해왔다. 단, 한 명 www.acmicpc.net 문제풀이 프로그래머스 Level 1 완주하지 못한 선수 문제와 같다. unordered_map을 이용해서 풀었다. 참가자의 이름을 입력받을 때는 runner[이름] 값을 +1을 했고, N-1개의 완주한 참가자의 이름을 입력받을 때는 runner[이름] 값을 -1 했다. iterator을 이용해 runner을 탐색하면서 value값이 0이 아닌 값을 찾으면 key값을 출력하고 종료한다..

문제 https://www.acmicpc.net/problem/4358 4358번: 생태학 프로그램은 여러 줄로 이루어져 있으며, 한 줄에 하나의 나무 종 이름이 주어진다. 어떤 종 이름도 30글자를 넘지 않으며, 입력에는 최대 10,000개의 종이 주어지고 최대 1,000,000그루의 나무가 주어 www.acmicpc.net 문제풀이 따로 끝을 알려주는 경우가 없고 띄어쓰기가 있어 한 줄을 입력받아야 하므로 while(getline(cin, name))을 사용했다. 정렬을 한 상태로 출력을 해야 하므로 unordered_map이 아닌 map을 사용했다. 입력받으면 unordered_map에 저장하고, 총개수에 +1을 한다. 모든 입력을 받았으면, iterator을 이용해 unordered_map을 탐색..

문제 https://www.acmicpc.net/problem/2075 2075번: N번째 큰 수 첫째 줄에 N(1 ≤ N ≤ 1,500)이 주어진다. 다음 N개의 줄에는 각 줄마다 N개의 수가 주어진다. 표에 적힌 수는 -10억보다 크거나 같고, 10억보다 작거나 같은 정수이다. www.acmicpc.net 문제풀이 단순히 모든 값을 입력받고 N번째 큰 수를 출력하려 했는데 메모리 초과가 났다. 그래서 N번째 까지는 값을 모두 입력받고, 그다음부터는 입력받을 값을 넣고 pop을 하여 우선순위 큐의 크기를 N으로 유지했다. 모든 값을 입력받았으면 top을 출력하면 된다. 우선순위 큐는 내림차순으로 정렬하기 위해 greater를 넣었다. 코드 #include #include using namespace s..