Dev2yup의 프로그래밍 이야기 🖥 💻

C 66

[80] 프로그래밍 실습 강의 (구조체, 구조체 포인터, <time.h>)

헤더파일에는 시간을 저장하는 struct tm 구조체가 다음과 같이 정의되어 있다. struct tm { int tm_sec; // 초 : [0, 61] 시간 보정을 위해 61초까지 있음 int tm_min; // 분 : [0, 59] int tm_hour; // 시 : [0, 23] int tm_mday; // 일 : [1, 31] int tm_mon; // 월 : [0, 11] 0이 1월이며, 11이 12월임 int tm_year; // 년 : 1900 이후 몇 년이 지났는지를 나타냄 int tm_wday; // 요일 : [0, 6] 0이 일요일이며 6이 토요일임 int tm_yday; // 1월 1일부터의 날 수 : [0, 365] int tm_isdst; // 섬머타임 플래그 }; localtim..

C 2022.09.26

[79] C 백준 1010번 다리놓기 문제 (동적 계획법, Dynamic programming, 수학)

문제 재원이는 한 도시의 시장이 되었다. 이 도시에는 도시를 동쪽과 서쪽으로 나누는 큰 일직선 모양의 강이 흐르고 있다. 하지만 재원이는 다리가 없어서 시민들이 강을 건너는데 큰 불편을 겪고 있음을 알고 다리를 짓기로 결심하였다. 강 주변에서 다리를 짓기에 적합한 곳을 사이트라고 한다. 재원이는 강 주변을 면밀히 조사해 본 결과 강의 서쪽에는 N개의 사이트가 있고 동쪽에는 M개의 사이트가 있다는 것을 알았다. (N ≤ M) 재원이는 서쪽의 사이트와 동쪽의 사이트를 다리로 연결하려고 한다. (이때 한 사이트에는 최대 한 개의 다리만 연결될 수 있다.) 재원이는 다리를 최대한 많이 지으려고 하기 때문에 서쪽의 사이트 개수만큼 (N개) 다리를 지으려고 한다. 다리끼리는 서로 겹쳐질 수 없다고 할 때 다리를 지..

C 2022.09.26

[72] C 1764번 듣보잡 문제 (자료구조, 문자열, 정렬)

문제 김진영이 듣도 못한 사람의 명단과, 보도 못한 사람의 명단이 주어질 때, 듣도 보도 못한 사람의 명단을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. 이름은 띄어쓰기 없이 알파벳 소문자로만 이루어지며, 그 길이는 20 이하이다. N, M은 500,000 이하의 자연수이다. 듣도 못한 사람의 명단에는 중복되는 이름이 없으며, 보도 못한 사람의 명단도 마찬가지이다. 출력 듣보잡의 수와 그 명단을 사전순으로 출력한다. 예제 입력 1 3 4 ohhenrie charlie baesangwook obama baesangwo..

C 2022.09.20

[71] C 백준 10814번 나이순 정렬 문제

문제 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 작성하시오. 입력 첫째 줄에 온라인 저지 회원의 수 N이 주어진다. (1 ≤ N ≤ 100,000) 둘째 줄부터 N개의 줄에는 각 회원의 나이와 이름이 공백으로 구분되어 주어진다. 나이는 1보다 크거나 같으며, 200보다 작거나 같은 정수이고, 이름은 알파벳 대소문자로 이루어져 있고, 길이가 100보다 작거나 같은 문자열이다. 입력은 가입한 순서로 주어진다. 출력 첫째 줄부터 총 N개의 줄에 걸쳐 온라인 저지 회원을 나이 순, 나이가 같으면 가입한 순으로 한 줄에 한 명씩 나이와 이름을 공백으로 구분해 출력한다. 예제..

C 2022.09.18

[70] C 백준 1932번 정수 삼각형문제 (Dynamic programming 동적 계획법)

문제 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 위 그림은 크기가 5인 정수 삼각형의 한 모습이다. 맨 위층 7부터 시작해서 아래에 있는 수 중 하나를 선택하여 아래층으로 내려올 때, 이제까지 선택된 수의 합이 최대가 되는 경로를 구하는 프로그램을 작성하라. 아래층에 있는 수는 현재 층에서 선택된 수의 대각선 왼쪽 또는 대각선 오른쪽에 있는 것 중에서만 선택할 수 있다. 삼각형의 크기는 1 이상 500 이하이다. 삼각형을 이루고 있는 각 수는 모두 정수이며, 범위는 0 이상 9999 이하이다. 입력 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. 출력 첫째 줄에 합이 최대가 되는 경로에 있는 수의 합을 출력한다. 예제 입력..

C 2022.09.18

[69] C 백준 1026번 보물 문제 (수학, 정렬)

문제 옛날 옛적에 수학이 항상 큰 골칫거리였던 나라가 있었다. 이 나라의 국왕 김지민은 다음과 같은 문제를 내고 큰 상금을 걸었다. 길이가 N인 정수 배열 A와 B가 있다. 다음과 같이 함수 S를 정의하자. S = A[0] × B[0] + ... + A[N-1] × B[N-1] S의 값을 가장 작게 만들기 위해 A의 수를 재배열하자. 단, B에 있는 수는 재배열하면 안 된다. S의 최솟값을 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거나 같은 음이 아닌 정수이다. 출력 첫째 줄에 S의 최솟값을 출력한다. 예제..

C 2022.09.14

[68] C 백준 1037번 약수 문제 (수학, 정렬)

문제 양수 A가 N의 진짜 약수가 되려면, N이 A의 배수이고, A가 1과 N이 아니어야 한다. 어떤 수 N의 진짜 약수가 모두 주어질 때, N을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N의 진짜 약수의 개수가 주어진다. 이 개수는 50보다 작거나 같은 자연수이다. 둘째 줄에는 N의 진짜 약수가 주어진다. 1,000,000보다 작거나 같고, 2보다 크거나 같은 자연수이고, 중복되지 않는다. 출력 첫째 줄에 N을 출력한다. N은 항상 32비트 부호있는 정수로 표현할 수 있다. 예제 입력 1 복사 2 4 2 예제 출력 1 복사 8 예제 입력 2 복사 1 2 예제 출력 2 복사 4 예제 입력 3 복사 6 3 4 2 12 6 8 예제 출력 3 복사 24 예제 입력 4 복사 14 14 26456 2 28 ..

C 2022.09.11

[67] C 백준 18870번 좌표 압축 문제 (정렬, 구조체, 동적할당)

문제 수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌표 압축을 적용한 결과 X'1, X'2, ..., X'N를 출력해보자. 입력 첫째 줄에 N이 주어진다. 둘째 줄에는 공백 한 칸으로 구분된 X1, X2, ..., XN이 주어진다. 출력 첫째 줄에 X'1, X'2, ..., X'N을 공백 한 칸으로 구분해서 출력한다. 제한 1 ≤ N ≤ 1,000,000 -109 ≤ Xi ≤ 109 예제 입력 1 5 2 4 -10 4 -9 예제 출력 1 2 3 0 3 1 예제 입력 2 6 1000 999 1000 999 1000 ..

C 2022.09.10

[66] C 백준 1358번 하키문제 (기하학)

문제 지난주에, 민식주식회사는 IIHF(International Ice Hockey Federation)로부터 긴급한 전화를 받았다. IIHF는 같은 팀이 링크안에 너무 많으면 알람이 울리는 시스템을 설치해달라고 요청했다. 시스템은 다음과 같이 3개의 부분으로 이루어진다. 디지털카메라가 링크의 사진을 매 1초마다 찍는다. 디지털카메라가 찍은 사진에서 각 선수의 위치를 뽑아낸다. 하키 링크 안에 같은 팀 선수가 총 몇 명인지 계산한다. 하키 링크는 (X, Y)가 가장 왼쪽 아래 모서리인 W * H 크기의 직사각형과, 반지름이 H/2이면서 중심이 (X, Y+R), (X+W, Y+R)에 있는 두 개의 원으로 이루어져 있다. 아래 그림을 참고한다. 선수들의 위치가 주어질 때, 링크 안 또는 경계에 있는 선수가 ..

C 2022.09.09

[65] C 백준 1427번 소트인사이드 문제 (문자열, 정렬)

문제 배열을 정렬하는 것은 쉽다. 수가 주어지면, 그 수의 각 자리수를 내림차순으로 정렬해보자. 입력 첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. 출력 첫째 줄에 자리수를 내림차순으로 정렬한 수를 출력한다. 예제 입력 1 2143 예제 출력 1 4321 예제 입력 2 999998999 예제 출력 2 999999998 예제 입력 3 61423 예제 출력 3 64321 예제 입력 4 500613009 예제 출력 4 965310000 N은 1,000,000,000보다 작거나 같은 자연수이므로 정수를 표현하는 자료형으로는 담을 수 없어 문자열을 이용해야 한다. 1. 문자열을 통해 숫자를 입력받는다. 2. 입력받은 문자 숫자를 한자리씩 정수 숫자로 바꿔..

C 2022.09.09