전체 글 465

[ BOJ ] 10159 : 저울 ( GOLD 4 ) / Python

문제 무게가 서로 다른 N 개의 물건이 있다. 각 물건은 1부터 N 까지 번호가 매겨져 있다. 우리는 일부 물건 쌍에 대해서 양팔 저울로 어떤 것이 무거운 것인지를 측정한 결과표를 가지고 있다. 이 결과표로부터 직접 측정하지 않은 물건 쌍의 비교 결과를 알아낼 수도 있고 알아내지 못할 수도 있다. 예를 들어, 총 6개의 물건이 있고, 다음 5개의 비교 결과가 주어졌다고 가정하자. ([1]은 1번 물건의 무게를 의미한다.) [1]>[2], [2]>[3], [3]>[4], [5]>[4], [6]>[5] 우리는 [2]>[3], [3]>[4]로부터 [2]>[4]라는 것을 알 수 있다. 하지만, 물건 2와 물건 6을 비교하는 경우, 앞서의 결과만으로는 어느 것이 무거운지 알 수 없다. 이와 같이, 물건 2는 물건..

[ BOJ ] 3109 : 빵집 ( GOLD 2 ) / C

문제 유명한 제빵사 김원웅은 빵집을 운영하고 있다. 원웅이의 빵집은 글로벌 재정 위기를 피해가지 못했고, 결국 심각한 재정 위기에 빠졌다. 원웅이는 지출을 줄이고자 여기저기 지출을 살펴보던 중에, 가스비가 제일 크다는 것을 알게되었다. 따라서 원웅이는 근처 빵집의 가스관에 몰래 파이프를 설치해 훔쳐서 사용하기로 했다. 빵집이 있는 곳은 R*C 격자로 표현할 수 있다. 첫째 열은 근처 빵집의 가스관이고, 마지막 열은 원웅이의 빵집이다. 원웅이는 가스관과 빵집을 연결하는 파이프를 설치하려고 한다. 빵집과 가스관 사이에는 건물이 있을 수도 있다. 건물이 있는 경우에는 파이프를 놓을 수 없다. 가스관과 빵집을 연결하는 모든 파이프라인은 첫째 열에서 시작해야 하고, 마지막 열에서 끝나야 한다. 각 칸은 오른쪽, ..

[ BOJ ] 10807 : 개수 세기 ( BRONZE 5 ) / C, C++, Python, Java

문제 총 N개의 정수가 주어졌을 때, 정수 v가 몇 개인지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 정수의 개수 N(1 ≤ N ≤ 100)이 주어진다. 둘째 줄에는 정수가 공백으로 구분되어져있다. 셋째 줄에는 찾으려고 하는 정수 v가 주어진다. 입력으로 주어지는 정수와 v는 -100보다 크거나 같으며, 100보다 작거나 같다. 출력 첫째 줄에 입력으로 주어진 N개의 정수 중에 v가 몇 개인지 출력한다. 풀이 과정 - 1 주어진 정수들을 배열 (리스트) 에 저장한 뒤 순차적으로 탐색하며 찾으려고 하는 정수 v를 세주면 되는 문제이다. C #include int arr[101]; int main(void) { int n; scanf("%d", &n); for (int i = 0; i < n; i++) ..

[ BOJ ] 10951 : A+B - 4 ( BRONZE 5 ) / C, C++, Python, Java

문제 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. 입력 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10) 출력 각 테스트 케이스마다 A+B를 출력한다. 풀이 과정 EOF 를 처리하는 방법에 대해 배우는 문제이다. 기존에는 0이 들어오면 반복문을 종료하면 되는 문제였지만 EOF를 처리하는 것은 생소할 수도 있을 것이다. 선호하는 언어의 EOF를 처리하는 방법을 숙지한다면 이후 EOF 를 다루는 문제를 만날 때 수월하게 해결할 수 있을 것이다. C #include int main(void) { int a, b; while(scanf("%d %d", &a, &b) == 2)..

[ BOJ ] 27114 : 조교의 맹연습 ( GOLD 4 ) / Python

문제 공군 훈련소의 훈육조교는 훌륭한 조교가 되기 위해 오늘도 피나는 제식 연습을 진행한다. 오늘 연습하려고 하는 제식은 총 세 가지로, 현재 바라보는 방향을 기준으로 각각 왼쪽으로 90도 회전하는 좌로 돌아, 오른쪽으로 90도 회전하는 우로 돌아, 뒤로 180도 회전하는 뒤로 돌아이다. 좌로 돌아, 우로 돌아, 뒤로 돌아를 1회 수행하는 데에는 각각 A, B, C만큼의 에너지가 든다. 오늘 조교의 총 에너지는 K만큼 남아있으며, 최고의 훈련을 위해 모든 K만큼의 에너지를 전부 소진하려고 한다. 조교는 본인의 에너지를 모두 소모하여 연습을 끝냈을 때 처음 바라보던 방향과 완벽히 동일한 방향을 바라보고자 한다. 또한, 어지러움으로 인한 흐트러짐을 막기 위해 제식의 수행 횟수를 최소화하고자 한다. 조교가 정..

[ 구름톤 챌린지 ] 20일차 미션 - 연결 요소 제거하기

구름톤 챌린지가 20일차를 끝으로 마무리 되었습니다! 20일차 동안 문제를 풀면서 느꼈던 점은, 코딩테스트를 준비하는 사람들에게 교육적인 문제가 많이 출제되어 유익하다는 점과 문제 하나하나가 재밌어서 매일 참여해야겠다는 흥미를 얻을 수 있었다는 점입니다. 한편으로는 기간이 더 길게 진행되어 더 많은 문제를 풀어볼 수 있다면 좋겠다는 생각도 들었지만, 본인의 Problem Solving 역량을 체크하는데 적정한 문제와 기간이였다고 생각합니다. https://level.goorm.io/l/challenge/goormthon-challenge 구름LEVEL 난이도별 다양한 문제를 해결함으로써 SW 역량을 향상시킬 수 있습니다. level.goorm.io 문제 입력 / 출력 풀이 과정 특정 칸에 알파벳 대문자를..

[ BOJ ] 10952 : A+B - 5 ( BRONZE 5 ) / C, C++, Python, Java

문제 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. 입력 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10) 입력의 마지막에는 0 두 개가 들어온다. 출력 각 테스트 케이스마다 A+B를 출력한다. 풀이 과정 테스트 케이스가 미리 주어지지 않고, 입력의 마지막에 0 두 개가 입력으로 들어온다. 0 두 개가 입력으로 들어오기 전까지 A + B 를 출력하면 되는 문제이다. C #include int main(void) { while(1) { int a, b; scanf("%d %d", &a, &b); if (a == 0 && b == 0) break; printf("%d\n",..

[ BOJ ] 2439 : 별 찍기 - 2 ( BRONZE 4 ) / C, C++, Python, Java

문제 첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제 하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오. 입력 첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다. 출력 첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다. 풀이 과정 별 찍기 - 1 문제와는 다르게, 별 앞에 공백이 들어간다. 예제 입력 1을 참고해 5가 입력으로 들어온다고 가정하면, 1번째 줄에는 공백 4개, 별 1개 2번째 줄에는 공백 3개, 별 2개 3번째 줄에는 공백 2개, 별 3개 4번째 줄에는 공백 1개, 별 4개 5번째 줄에는 공백 0개, 별 5개 가 출력된다. 즉, i 번째 줄에는 공백 n - i 개, 별 i 개가 출력되도록 반복문을 구성하면 되는 문제이다. C #include in..

[ BOJ ] 2438 : 별 찍기 - 1 ( BRONZE 5 ) / C, C++, Python, Java

문제 첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제 입력 첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다. 출력 첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다. 풀이 과정 반복문을 배운다면 자주 볼 수 있는 기초 반복문 문제이다. 예제 출력에서는 1번째 줄에 별 1개, 2번째 줄에 별 2개, 3번째 줄에 별 3개... 를 출력한다. 1번째 줄부터 n번째 줄까지, 별을 차례대로 1개부터 n개까지 출력하면 되기 때문에, 이중 반복문을 사용하여 i 번째 줄에 i 개의 별을 출력하면 된다. C #include int main(void) { int n; scanf("%d", &n); for (int i = 0; i n..