목록전체 글 (30)
Sena's garden
저번주의 갭체크 이후 내가 C 언어에서 약한 부분이 시뮬레이션이라는 것을 확인했다. 그렇다면 이제는 공부를 해 보아야겠지? https://www.codetree.ai/ko/trails/complete/dashboard/codetree-101 하지만 한 동안 코딩을 안 하다 하려고 하니 쉬운 것부터 하고 싶은 마음이 들기 시작했다. 그래서 선택한 것은...파이썬. 파이썬 공부에서 손을 떼고 문제를 파이썬으로 해결하지 않은 지 벌써 3년이 되어가고 있기에 완전 기초 부터 공부를 시작해보기로 했다. 코드트리에서 제공하는 트레일의 가장 첫 번재 레슨인 'Trail 0. Codetree 101 프로그래밍 시작'부터 문제를 풀어보았다. 그래도 컴퓨터과 짬바가 있지...ㅎㅎ그냥 완전 기초의 내용이었기 때문에 다른 ..
컴퓨터과 수업만 듣다보면 생각보다 코딩을 하지 않게 된다. 물론 개인마다 다르긴 할 것이다. 수업을 들으면서 코딩 공부를 하거나, 외부 활동을 하거나 하는 이들이라면 충분히 코딩 공부를 할 것이다. 하지만 나는 전공 수업과 전공 공부보다는 동아리 활동이나 전공과는 무관한 외부 활동들에 더 신경을 썼다. 그 결과 각 언어 사용법과 활용법, 코딩에 관한 기억들이 많이 사라졌다. 그나마 C언어는 주기적으로 관련된 공부를 했지만, 파이썬의 경우 1학년 1학기 때 이후로 데이터 분석을 가끔 진행할 때를 제외하고는 수업에서 뿐만 아니라 언어 공부를 하지 않아 기억에서 거의 삭제된 것만 같았다. 최근에는 웹 프론트 쪽을 공부를 하고 있다 보니 타입스크립를 사용하고, c언어나 java를 그나마 조금씩 사용을 하다보니 ..
문제 세 점이 주어졌을 때, 축에 평행한 직사각형을 만들기 위해서 필요한 네 번째 점을 찾는 프로그램을 작성하시오. 입력: 세 점의 좌표가 한 줄에 하나씩 주어진다. 좌표는 1보다 크거나 같고, 1000보다 작거나 같은 정수이다.출력: 직사각형의 네 번째 점의 좌표를 출력한다. 코드#define _CRT_SECURE_NO_WARNINGS#include int main() { int x[4], y[4]; for (int i = 0; i 이 문제는 if~elseif~else를 이용해 해결할 수 있다. 우선 x좌표와 y좌표를 저장할 배열에 scanf를 이용해 세 점의 좌표를 저장한다. 이때 직접 다 써서 저장할 수도 있지만, 간단히 하기 위해 for문을 이용했다. 먼저 남은 한 점의 x좌표를 ..
문제한수는 지금 (x, y)에 있다. 직사각형은 각 변이 좌표축에 평행하고, 왼쪽 아래 꼭짓점은 (0, 0), 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램을 작성하시오. 입력: 첫째 줄에 x, y, w, h가 주어진다.출력: 첫째 줄에 문제의 정답을 출력한다. 코드#define _CRT_SECURE_NO_WARNINGS#include int main() { int x, y, w, h; int min_w = 0, min_h = 0; scanf("%d %d %d %d", &x, &y, &w, &h); if (x > w / 2) min_w = w - x; else min_w = x; if (y > h / 2) min_h = h - y; e..
문제정수 N이 주어졌을 때, 소인수분해하는 프로그램을 작성하시오. 입력: 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다.출력: N의 소인수분해 결과를 한 줄에 하나씩 오름차순으로 출력한다. N이 1인 경우 아무것도 출력하지 않는다. 코드#define _CRT_SECURE_NO_WARNINGS#include int main() { int n; scanf("%d", &n); while (n > 1) { for (int i = 2; i 이 문제에서 고려해야 하는 것은 같은 수가 반복해서 소인수분해에 사용될 수 있다는 것이다. 우선 소인수 분해할 수 n을 scanf를 통해 입력받는다. n이 1인 경우 아무것도 출력하지 않는다고 했으므로, while 반복문에 이를 사용한..
문제주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오. 입력: 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.출력: 주어진 수들 중 소수의 개수를 출력한다.https://www.acmicpc.net/problem/1978 코드#define _CRT_SECURE_NO_WARNINGS#include int main() { int n; int input, count = 0; scanf("%d", &n); for (int i = 0; i 이 문제는 이중 for문을 이용해 간단하게 해결할 수 있다. 우선 scanf를 이용해 입력받을 숫자의 갯수를 n에 저장한다. 첫 번째 for문은 n번 반복되게..
문제어떤 숫자 n이 자신을 제외한 모든 약수들의 합과 같으면, 그 수를 완전수라고 한다.예를 들어 6은 6 = 1 + 2 + 3 으로 완전수이다.n이 완전수인지 아닌지 판단해주는 프로그램을 작성하라. 입력: 입력은 테스트 케이스마다 한 줄 간격으로 n이 주어진다. (2 출력:테스트케이스 마다 한줄에 하나씩 출력해야 한다. n이 완전수라면, n을 n이 아닌 약수들의 합으로 나타내어 출력한다(예제 출력 참고). 이때, 약수들은 오름차순으로 나열해야 한다. n이 완전수가 아니라면 n is NOT perfect. 를 출력한다. https://www.acmicpc.net/problem/9506 코드#define _CRT_SECURE_NO_WARNINGS#include int main() { int n; in..
문제어떤 자연수 p와 q가 있을 때, 만일 p를 q로 나누었을 때 나머지가 0이면 q는 p의 약수이다. 6을 예로 들면6 ÷ 1 = 6 … 06 ÷ 2 = 3 … 06 ÷ 3 = 2 … 06 ÷ 4 = 1 … 26 ÷ 5 = 1 … 16 ÷ 6 = 1 … 0그래서 6의 약수는 1, 2, 3, 6, 총 네 개이다.두 개의 자연수 N과 K가 주어졌을 때, N의 약수들 중 K번째로 작은 수를 출력하는 프로그램을 작성하시오. 입력: 첫째 줄에 N과 K가 빈칸을 사이에 두고 주어진다. N은 1 이상 10,000 이하이다. K는 1 이상 N 이하이다.출력: 첫째 줄에 N의 약수들 중 K번째로 작은 수를 출력한다. 만일 N의 약수의 개수가 K개보다 적어서 K번째 약수가 존재하지 않을 경우에는 0을 출력하시오. ..
문제4 × 3 = 12이다.이 식을 통해 다음과 같은 사실을 알 수 있다.3은 12의 약수이고, 12는 3의 배수이다.4도 12의 약수이고, 12는 4의 배수이다.두 수가 주어졌을 때, 다음 3가지 중 어떤 관계인지 구하는 프로그램을 작성하시오.첫 번째 숫자가 두 번째 숫자의 약수이다.첫 번째 숫자가 두 번째 숫자의 배수이다.첫 번째 숫자가 두 번째 숫자의 약수와 배수 모두 아니다.입력: 입력은 여러 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 10,000이 넘지않는 두 자연수로 이루어져 있다. 마지막 줄에는 0이 2개 주어진다. 두 수가 같은 경우는 없다.출력: 각 테스트 케이스마다 첫 번째 숫자가 두 번째 숫자의 약수라면 factor를, 배수라면 multiple을, 둘 다 아니라면 neithe..
문제무한히 큰 배열에 다음과 같이 분수들이 적혀있다. 이와 같이 나열된 분수들을 1/1 → 1/2 → 2/1 → 3/1 → 2/2 → … 과 같은 지그재그 순서로 차례대로 1번, 2번, 3번, 4번, 5번, … 분수라고 하자.X가 주어졌을 때, X번째 분수를 구하는 프로그램을 작성하시오. 입력: 첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다.출력: 첫째 줄에 분수를 출력한다. 코드#define _CRT_SECURE_NO_WARNINGS#include int main() { int input; int s = 1; int i, j, k; scanf("%d", &input); while (1) { if (input 배열표를 돌려서 보면 위쪽이 삼각형의 형태를 가지고 있다는 것을 알 ..