개발자 바다의 파도

개발의 무인도에 갇혔다

전체 글 210

3052 - 나머지 (C++)

문제 - 두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다. 수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오. 입력 - 첫째 줄부터 열번째 줄 까지 숫자가 한 줄에 하나씩 주어진다. 이 숫자는 1,000보다 작거나 같고, 음이 아닌 정수이다. 출력 - 첫째 줄에, 42로 나누었을 때, 서로 다른 나머지가 몇 개 있는지 출력한다. 풀이 - 이번 문제는 주어진 숫자에 42를 나눠서 남은 나머지 값을 구해서 나머지 값이 중복 안된 수가 몇 개인지 확인하는 문제입니다. 11번줄 for문은 배열 arr을 초기화 해줍니다. 여기서..

코딩테스트 입문 - 14일차 (C++)

14일차 - 조건문, 반복문, 시뮬레이션, 문자열 1번) 가까운 수 이번 문제는 백터 array에서 정수 n에 가장 가까운 array[i]을 구하는 것입니다. 일단 15번줄 for문에서 array[i]에 n만큼 뺀 값을 백터 arr에 저장을 합니다. 이후 26번줄 for문에서 가장 작은 값을 구하면서 idx도 저장을 합니다. 이 문제의 핵심은 가장 가까운 수가 여러 개일 경우 더 작은 수를 리턴을 해야 합니다. 그래서 36번 for문에서 가장 가까운 수가 여러 개일 때 더 작은 수를 answer에 저장합니다. 2번) 369게임 이번 문제는 정수 order에서 3,6,9인 숫자를 찾으면 answer을 1씩 더하면 되는 문제입니다. 이는 간단하게 11번줄 while문처럼 order을 10을 나누어서 나머지 ..

코딩테스트 입문 - 13일차 (C++)

13일차 - 문자열, 배열, 사칙연산, 수학, 조건문 1번) 컨트롤 제트 이번 문제는 문자열 s에서 숫자가 나오면 숫자를 더하면 됩니다. 다만 'Z'가 나타나면 그 전에 있는 숫자를 더하면 안되니 빼야 합니다. 일단 이번 문제는 s에 공백으로 숫자와 'Z'를 나눕니다. 그래서 12번줄 for문에서 공백을 발견하면 저장된 idx에서 i값까지 temp값에 s의 값을 저장합니다. 이후 Z이면 전에 저장한 값 (strToInt)을 뺍니다. 만일 Z가 아닌 경우는 숫자이니 strToInt에 temp값을 넣습니다. 이후 answer에 strToInt 값을 더하면 됩니다. 41번줄 for문은 s의 마지막 값을 저장하기 위한 것입니다. 여기서도 Z이면 strToInt 값을 answer에서 빼줘야 하고, 숫자이면 ans..

5597 - 과제 안 내신 분..? (C++)

문제 - X대학 M교수님은 프로그램이 수업을 맡고 있다. 교실엔 학생이 30명이 있는데, 학생 명부엔 각 학생별로 1번부터 30번까지 출석번호가 붙어 있다. 교수님이 내준 특별과제를 28명이 제출했는데, 그 중에서 제출 안 한 학생 2명의 출석번호를 구하는 프로그램을 작성하시오. 입력 - 입력은 총 28줄로 각 제출자(학생)의 출석번호 n (1

10813 - 공 바꾸기 (C++)

문제 - 도현이는 바구니를 총 N개를 가지고 있고, 각각의 바구니에는 1번부터 N번까지 번호가 매겨져 있다. 바구니에는 공이 1개씩 들어있고, 처음에는 바구니에 적혀있는 번호와 같은 번호가 적힌 공이 들어있다. 도현이는 앞으로 M번 공을 바꾸려고 한다. 도현이는 공을 바꿀 바구니 2개를 선택하고, 두 바구니에 들어있는 공을 서로 교환한다. 공을 어떻게 바꿀지가 주어졌을 때, M번 공을 바꾼 이후에 각 바구니에 어떤 공이 들어있는지 구하는 프로그램을 작성하시오. 입력 - 첫째 줄에 N (1

코딩테스트 입문 - 12일차 (C++)

12일차 - 문자열, 정렬, 사칙연산, 수학 1번) 모음 제거 이번 문제는 간단하게 my_string[i]에 모음 (a, e, i, o, u)가 있으면 answer에 값을 추가 안하고, 반대로 모음이 아니면 answer에 string[i]을 삽입하면 되는 간단한 문제입니다. 2번) 문자열 정렬하기 (1) 이번 문제는 my_string 내에 숫자를 찾고 그 숫자들을 오름차순으로 정렬해야 합니다. 일단 12번 for문에서 my_string[i]이 숫자인 경우를 isdigit() 함수로 찾습니다. 만일 맞으면 answer에 값을 삽입하는데 주의해야 할 것은 char을 int로 변환해서 주는 것처럼 하기 위해 아스키 코드에 따라 48만큼 빼줘야 합니다. 이후 20번줄 for문에서 숫자를 정렬을 합니다. 여기서 ..

10810 - 공 넣기 (C++)

문제 - 도현이는 바구니를 총 N개 가지고 있고, 각각의 바구니에는 1번부터 N번까지 번호가 매겨져 있다. 또, 1번부터 N번까지 번호가 적혀있는 공을 매우 많이 가지고 있다. 가장 처음 바구니에는 공이 들어있지 않으며, 바구니에는 공을 1개만 넣을 수 있다. 도현이는 앞으로 M번 공을 넣으려고 한다. 도현이는 한 번 공을 넣을 때, 공을 넣을 바구니 범위를 정하고, 정한 바구니에 모두 같은 번호가 적혀있는 공을 넣는다. 만약, 바구니에 공이 이미 있는 경우에는 들어있는 공을 빼고, 새로 공을 넣는다. 공을 넣을 바구니는 연속되어 있어야 한다. 공을 어떻게 넣을지가 주어졌으 때, M번 공을 넣은 이후에 각 바구니에 어떤 공이 들어 있는지 구하는 프로그램을 작성하시오. 입력 - 첫째 줄에 N (1

코딩테스트 입문 - 11일차 (C++)

11일차 - 수학, 반복문 1번) 주사위의 개수 이번 문제는 개인적으로 약간 이해하기 어려웠습니다. 일단 9번줄에 정수 a, b, c를 박스 가로, 세로, 높이 길이로 설정합니다. 이후 15번줄 while문에서 가로, 세로, 높이가 주사위 모서리의 크기인 n보다 크거나 같은 경우 cnt를 1씩 더하고 가로, 세로, 높이를 n만큼 뺍니다. 만일 가로,세로, 높이가 n보다 작은 경우, 즉 더 이상 주사위가 들어갈 자리가 없는 경우, while을 멈추고 가로, 세로, 높이를 n과 cnt를 곱해서 그 쪽에서 얼마나 주사위를 가질 수 있는지를 계산합니다. 마지막으로 42번줄에 가로, 세로, 높이를 곱한 다음 주사위의 부피만큼 나눠주면 됩니다. 2번) 합성수 찾기 이번 문제는 정수 n 이하의 합성수를 찾는 것입니다..

2562 - 최댓값 (C++)

문제 - 9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오. 예를 들어, 서로 다른 9개의 자연수 3, 29, 38, 12, 57, 74, 40, 85, 61이 주어지면, 이들 중 최댓값은 85이고, 이 값은 8번째 수이다. 입력 - 첫째 줄부터 아홉 번째 줄까지 한 줄에 하나의 자연수가 주어진다. 주어지는 자연수는 100 보다 작다. 출력 - 첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 몇 번째 수인지를 출력한다 풀이 - 이번 문제는 간단하게 13번줄 for문에서 값을 받으면서 그 값이 최댓값인지 확인하고 (17번줄) 만일 최댓값이면 그 값과 i + 1값을 저장하면 됩니다. 코드 복붙 주소 - https://github.com..

코딩테스트 입문 - 10일차 (C++)

10일차 - 조건문, 배열, 수학, 시뮬레이션 1번) 점의 위치 구하기 이번 문제는 간단하게 x, y좌표 위치를 파악하고 제 n사분면에 있는 것을 알려주면 됩니다. 조건은 x와 y가 0보다 크면 1, x가 음수 y가 양수면 2, x와 y가 음수이면 3, x가 양수이면서 y가 음수이면 4입니다. 2번) 2차원으로 만들기 이번 문제는 1차원 배열을 2차원 배열로 만들어 주면 되는 문제입니다. 일단 12번줄처럼 1차원 배열의 크기를 n으로 나눠서 세로 값을 구합니다. 가로 값은 정수 n과 동일합니다. 이후 18번 for문에서 column과 row를 2중 for문으로 나눠서 값을 하나씩 입력해줍니다. 3번) 공 던지기 이번 문제는 배열 값 사이에 공을 던지는 것처럼 공을 패스하는 문제입니다. 그래서 9번줄 fo..