
https://www.acmicpc.net/problem/11971 11971번: 속도 위반 예를 들어 도로가 3구역 [(40km, 75km/h), (50km, 35km/h), (10km, 45km/h)] 이고. 연정이가 달린 3구역 [(40km, 76km/h), (20km, 30km/h), (40km, 40km/h)] 이라면, 처음 0 ~ 40km 영역에서 1km/h 만큼 위반했으나 60km ~ 90km 사이에 www.acmicpc.net 난이도 : 실버 5 태그 : 구현 설명 도로의 길이가 100km 밖에 되지 않기 때문에, 1km씩 체크하여, 1~100km 모든 지점에서, 현재 속도를 위반했는지 체크해도 주어진 시간 안에 충분히 통과할 수 있습니다. 소스코드 #include int main() { ..

https://www.acmicpc.net/problem/24389 24389번: 2의 보수 컴퓨터는 뺄셈을 처리할 때 내부적으로 2의 보수를 사용한다. 어떤 수의 2의 보수는 해당하는 숫자의 모든 비트를 반전시킨 뒤, 1을 더해 만들 수 있다. 이때, 32비트 기준으로 처음 표현했던 수와 www.acmicpc.net 난이도 : 브론즈 1 태그 : 수학, 비트마스킹 설명 컴퓨터가 음수를 표현하는 방식중 하나인 2의 보수법에 관한 문제입니다. 10진수가 입력되면 이를 2진수로 바꾸고, 1을 0으로, 0을 1로 반전시킨 후, 1을 더해 구할 수 있습니다. 소스코드 #include int main() { int bit[32] = {0}; int bitReversed[32] = {0}; int n; scanf(..

https://www.acmicpc.net/problem/3595 3595번: 맥주 냉장고 맥주를 좋아하는 창영이는 냉장고에 맥주를 보관한다. 일반 냉장고에 음식과 맥주를 함께 보관하다보니 창영이의 냉장고에는 맥주를 넣을 곳이 점점 없어지고 있었다. 창영이는 맥주 전용 냉장 www.acmicpc.net 난이도 : 브론즈 2 태그 : 수학, 브루트포스 설명 a * b * c = n을 만족하는 abc중, 겉넓이가 가장 작은 값들을 찾는 문제입니다. 뭔가 수학적으로 효율적으로 찾을 수 있지 않을까... 고민하다가 그냥 맘 편하게 브루트포스로 했습니다. 소스코드 #include int main() { int n; scanf("%d", &n); long min = 987654321; int num[3] = {0,..

https://www.acmicpc.net/problem/2520 2520번: 팬케이크 사랑 첫 번째 테스트 케이스에서 주어진 재료를 가지고 바나나 팬케익 10개, 딸기 팬케익 1개, 초콜릿 팬케익 4개, 호두 팬케익 1개를 만들 수 있다. 두 번째 테스트 케이스에서 주어진 재료 중 밀 www.acmicpc.net 난이도 : 브론즈 2 태그 : 수학, 구현, 사칙연산 설명 우유 8컵, 계란 노른자 8개, 설탕 4스푼, 소금 1스푼, 밀가루 9컵이 있으면 팬케이크 반죽 16개를 만들 수 있습니다. 즉, 반죽 1개당 우유 0.5개, 노른자 0.5개, 설탕 0.25스푼, 소금 0.0625스푼, 밀가루 0.5625컵 필요합니다. 우유, 계란, 설탕, 소금, 밀가루가 각각 16, 16, 8, 2, 17만큼 있을 ..

https://www.acmicpc.net/problem/3447 3447번: 버그왕 입력은 여러 줄의 소스 코드로 이루어져 있다. 이 소스 코드는 백준이가 작성한 버그를 찾는 프로그램으로 이미 처리가 되어있다. 각 줄은 100글자 이내이고, 입력은 파일이 끝날 때 끝난다. 줄의 www.acmicpc.net 난이도 : 브론즈 1 태그 : 문자열, 파싱, 정규표현식 설명 "BUG" 문자열을 모두 찾아 없애는 문제입니다. 문자열의 전체 개수가 주어지지 않는데, 이는 fgets() 함수로 NULL이 나올때까지 받아 해결할 수 있습니다. 소스코드 #include #include int main() { char str[101]; char bug[] = "BUG"; // 더 이상 받을 문자열이 없을 때 까지 반복 ..

https://www.acmicpc.net/problem/4158 4158번: CD 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 상근이가 가지고 있는 CD의 수 N, 선영이가 가지고 있는 CD의 수 M이 주어진다. N과 M은 최대 백만이다. 다음 줄 www.acmicpc.net 난이도 : 실버 5 태그 : 자료 구조, 이분 탐색, 해시를 사용한 집합과 맵, 두 포인터 설명 두 사람이 공통으로 갖고 있는 CD의 개수를 출력하는 문제입니다. 이중 for문을 사용하여 같은 CD를 체크할 경우 시간초과에 걸릴게 뻔하므로, 다른 풀이를 생각해보아야 합니다. 1 3 6 7 9와 1 2 3 5 9, 두 개의 배열이 있습니다. 양쪽의 배열 index를 가르킬 ptr1, ptr2가 ..

https://www.acmicpc.net/problem/8979 8979번: 올림픽 입력의 첫 줄은 국가의 수 N(1 ≤ N ≤ 1,000)과 등수를 알고 싶은 국가 K(1 ≤ K ≤ N)가 빈칸을 사이에 두고 주어진다. 각 국가는 1부터 N 사이의 정수로 표현된다. 이후 N개의 각 줄에는 차례대로 각 www.acmicpc.net 난이도 : 실버 5 태그 : 정렬, 구현 설명 금메달 - 은메달 - 동메달 우선순위로 순위를 정해 특정 국가가 몇등인지 출력하는 서브테스크 문제입니다. 서브테스크는 특정 조건을 충족할때마다 배점을 주는 방식인데, 그냥 부분점수가 있다 생각하면 됩니다. 특정 국가의 등수를 구하는 문제이기 때문에, 모든 국가의 등수를 하나하나 구할 필요 없이 특정 국가보다 성적이 높은 나라만 카..

https://www.acmicpc.net/problem/9339 9339번: 마라토너 상근이는 마라톤 학원을 운영하고 있다. 학원의 수강생은 총 K명으로, 다가오는 마라톤 대회에 참가하기 위해 연습을 하고 있다. 마라톤 대회가 끝나고, 기록이 6시간 이하인 경우는 마라톤 완주 www.acmicpc.net 난이도 : 브론즈 1 태그 : 구현 설명 수강생들 중 가장 성적이 좋은 수강생과, 통과한 수강생들의 수를 출력하는 문제입니다. 소스코드 #include int main() { int T; scanf("%d", &T); while (T--) { int studentCnt; // 학생의 수 scanf("%d", &studentCnt); int students[101]; // 학생들의 수 (최대 100명) ..

https://www.acmicpc.net/problem/2704 2704번: 이진법 시계 각 테스트 케이스마다, 3열 방식으로 읽은 이진법 시계의 시각과 3행 방식으로 읽은 이진법 시계의 시각을 공백으로 구분하여 출력한다. 각각 18개의 비트를 가져야 한다. www.acmicpc.net 난이도 : 브론즈 2 태그 : 구현 설명 시, 분, 초를 각각 이진법으로 나타내고 가로/세로 기준으로 출력하는 문제입니다. C언어에 2진수 변환 내장 함수가 있을까 하며 찾아보다가, 그냥 포기하고 직접 구현해서 풀었습니다. 소스코드 #include #include void get_bin(int arr[], int n) { int i = 0; while (n > 0) { arr[i] = n % 2; n /= 2; i++;..

https://www.acmicpc.net/problem/25205 25205번: 경로당펑크 2077 시은이는 종합설계 프로젝트로 오픈월드 액션 고스톱 게임 경로당펑크 2077을 개발하고 있다. 대사를 추가하던 중, 사용자 이름에 따라 '을' 또는 '를' 중 하나를 출력해야 함을 깨달았다. 예를 들 www.acmicpc.net 난이도 : 브론즈 2 태그 : 구현, 문자열 설명 한글의 경우, 이름의 마지막 글자의 종성이 있다면, 즉 받침이 있다면 '를', 없다면 '을' 을 사용합니다. 닉네임이 영타로 들어올 때, 마지막 글자만 체크해서 자음이면 1, 모음이면 0을 출력하면 됩니다. 소스코드 #include #include int main() { int n; char name[30]; scanf("%d", ..