728x90

C 18

백준 10989 - 수 정렬하기 3(C언어,C++)(계수 정렬)

오늘은 백준 10989 수 정렬하기 3문제에 대해 알아보는 시간을 가지겠습니다. 문제를 풀면 분명 맞다고 생각되는데 계속 시간초과나 메모리초과가 나오기에 당황하셨을 겁니다. 오늘은 왜 틀리고 어떻게 해야 하는지 C언어에서 알아보겠습니다. 문제 N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. 출력 첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다. 해설 문제 조건을 보면 N은 1~ 1천만 까지 주어집니다. 그리고 메모리 제한은 8mb입니다. 만약 N만큼 배열을 선언하여 수를 입력받으..

[C/C++] 백준 1152 : 단어의 개수 풀이

백준 1152 : 단어의 개수(C, C++) 문제 링크 : 1152번: 단어의 개수 (acmicpc.net) 1152번: 단어의 개수 첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열 www.acmicpc.net C언어와 C++ 두 가지 모두 해설이 준비되어 있습니다. 문제 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열에는 몇 개의 단어가 있을까? 이를 구하는 프로그램을 작성하시오. 단, 한 단어가 여러 번 등장하면 등장한 횟수만큼 모두 세어야 한다. 입력 첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1..

[C/C++] 백준 2884 : 알람 시계 풀이

백준 2884 : 알림 시계(C, C++) 문제 링크 : 2884번: 알람 시계 (acmicpc.net) 2884번: 알람 시계 상근이는 매일 아침 알람을 듣고 일어난다. 알람을 듣고 바로 일어나면 다행이겠지만, 항상 조금만 더 자려는 마음 때문에 매일 학교를 지각하고 있다. 상근이는 모든 방법을 동원해보았지만, www.acmicpc.net 문제 상근이는 매일 아침 알람을 듣고 일어난다. 알람을 듣고 바로 일어나면 다행이겠지만, 항상 조금만 더 자려는 마음 때문에 매일 학교를 지각하고 있다. 상근이는 모든 방법을 동원해 보았지만, 조금만 더 자려는 마음은 그 어떤 것도 없앨 수가 없었다. 이런 상근이를 불쌍하게 보던 창영이는 자신이 사용하는 방법을 추천해 주었다. 바로 "45분 일찍 알람 설정하기"이다...

백준 플레 5 달성!

백준 플레티넘 5를 달성하였다! 사실 플레 5는 찍은 지 꽤 됐는데 이제 자랑한다. 골드 5까지는 빨리 찍었는데 플레 5는 1년이 더 걸렸다. 골드 2? 까지는 가파르고 빠르게 올렸었는데 그쯤부터 레이팅 오르는 속도가 많이 느려졌었다. 실버문제를 풀어도 점수를 짜게 줘서 골드를 풀자니 그 당시 한 문제 푸는데 시간이 오래 걸리고..... 대충 클래스5를 따고 상위 100문제 평균을 골드 4 정도 맞추면 플레를 찍는 거 같다. 나는 상위 100문제를 골드 5 이상으로 채웠다. 실버가 안 보여서 간지가 나긴 한다. 그런데 이제 레이팅을 올리려면 골드 4 이상의 문제를 풀어야 하기 때문에 점수 올리기가 매우 힘들다. 골드 상위 문제들은 푸는데 시간이 오래 걸리고 플레이상의 문제들은 슬슬 벽이 느껴지기 시작했다..

자유 2024.02.08

백준 11720-숫자의 합(C언어)

문제 링크 : https://www.acmicpc.net/problem/11720 11720번: 숫자의 합 첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다. www.acmicpc.net 문제 N개의 숫자가 공백 없이 쓰여있다. 이 숫자를 모두 합해서 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백 없이 주어진다. 출력 입력으로 주어진 숫자 N개의 합을 출력한다. 예제 입력 1 1 1 예제 출력 1 1 해설 둘째 줄에서 숫자 n개를 공백 없이 받을 때 int형으로 받는다면 n개의 정수가 입력받아지는 것이 아니라 한 개의 정수만 입력받아진다. 물론 이렇게도 풀 수 있지만..

백준 1065-한수(C언어)

문제 링크 : https://www.acmicpc.net/problem/1065 1065번: 한수 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 www.acmicpc.net 문제 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다. 출력 첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수..

백준 4344- 평균은 넘겠지(C언어)

문제 링크 : https://www.acmicpc.net/problem/4344 4344번: 평균은 넘겠지 대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다. www.acmicpc.net 문제 대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다. 입력 첫째 줄에는 테스트 케이스의 개수 C가 주어진다. 둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고, 이어서 N명의 점수가 주어진다. 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다. 출력 각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지..

백준 1110- 더하기 사이클(C언어)

문제 링크 : https://www.acmicpc.net/problem/1110 1110번: 더하기 사이클 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, www.acmicpc.net 문제 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그다음, 주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자리 수를 이어 붙이면 새로운 수를 만들 수 있다. 다음 예를 보자. 26부터 시작한다. 2+6..

백준 10871- X보다 작은 수(C언어)

문제 링크 : https://www.acmicpc.net/problem/10871 10871번: X보다 작은 수 첫째 줄에 N과 X가 주어진다. (1 ≤ N, X ≤ 10,000) 둘째 줄에 수열 A를 이루는 정수 N개가 주어진다. 주어지는 정수는 모두 1보다 크거나 같고, 10,000보다 작거나 같은 정수이다. www.acmicpc.net 문제 정수 N개로 이루어진 수열 A와 정수 X가 주어진다. 이때, A에서 X보다 작은 수를 모두 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 N과 X가 주어진다. (1 ≤ N, X ≤ 10,000) 둘째 줄에 수열 A를 이루는 정수 N개가 주어진다. 주어지는 정수는 모두 1보다 크거나 같고, 10,000보다 작거나 같은 정수이다. 출력 X보다 작은 수를 입력받은 ..

열혈C도전프로그래밍-도전 프로그래밍3

윤성우의 열혈 C 프로그래밍 406쪽에 위치한 '도전! 프로그래밍 3'의 해설입니다. 도전 1 길이가 4×4인 int형 2차원 배열을 선언하고, 모든 요소를 아래 그림의 왼쪽에 있는 형태와 동일하게 초기화하자. 그리고 배열의 요소들을 오른쪽 방향으로 90˚씩 이동시켜서 그 결과를 출력하는 프로그램을 작성해 보자. 참고로 배열이 변경되는 형태는 다음과 같다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 13 9 5 1 14 10 6 2 15 11 7 3 16 12 8 4 처음에 어떻게 방향을 돌릴지 고민할 것이다. 어떻게 할지 모를 때는 일단 각각의 좌표가 어디로 이동하는지 일일이 적어보고 규칙을 찾으면 된다. 처음 좌표 회전후 좌표 0, 0 0, 3 0, 1 1, 3 0, 2 2..

728x90