일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 정렬
- SQL
- 백준알고리즘
- C
- 큐
- 논문리뷰
- C언어
- 프로그래머스연습문제
- 그리디알고리즘
- 자료구조
- 백준
- 정수론
- 논문구현
- 소수판정
- 이진탐색
- C++
- 수학
- 그리디
- 사칙연산
- 이분탐색
- 구현
- 프로그래머스
- 프로그래머스sql
- 다이나믹프로그래밍
- MySQL
- Image Classification
- 문자열
- 프로그래머스코딩테스트
- 브루트포스알고리즘
- 해시를사용한집합과맵
- Today
- Total
목록C++ (123)
초보 개발자의 이야기, 릿허브

1. 문제이해 https://www.acmicpc.net/problem/1302 1302번: 베스트셀러 첫째 줄에 오늘 하루 동안 팔린 책의 개수 N이 주어진다. 이 값은 1,000보다 작거나 같은 자연수이다. 둘째부터 N개의 줄에 책의 제목이 입력으로 들어온다. 책의 제목의 길이는 50보다 작거나 같고 www.acmicpc.net 하루동안 팔린 책의 개수(N)과 팔린 책들의 이름이 주어진다. 이때, 가장 많이 팔린 책의 이름을 출력하는 것이 목표이다. (단, 가장 많이 팔린 책이 여러 개일 경우, 사전 순으로 가장 앞서는 제목을 출력한다.) 2. 문제풀이 팔린 책의 개수(N)와 책의 이름들이 주어질 때, 가장 많이 팔린 책의 이름을 구하는 것이 목표이다. 책의 이름과 해당 책의 판매량을 모두 저장해야하..

1. 문제이해 https://www.acmicpc.net/problem/1235 1235번: 학생 번호 첫째 줄에는 학생의 수 N(2≤N≤1,000)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 학생의 학생 번호가 순서대로 주어진다. 모든 학생들의 학생 번호는 서로 다르지만 그 길이는 모두 같으며, 0부 www.acmicpc.net 학생의 수(N)와 각 학생들의 번호가 주어진다. 번호를 뒤에서 k자리만 남겨놓았을 때, 모든 번호를 다르게 만들 수 있는 k의 최솟값을 구하는 것이 목표이다. 2. 문제풀이 입력받은 학생 번호를 뒤에서 k만큼 남겨놓을 때, 모든 번호를 다르게 만드는 최솟값을 구하는 문제이다. 아래 예제 입력 1을 통해 풀이 방법을 자세히 알아보자. N = 3 1212345 1212356 0..

1. 문제이해 https://www.acmicpc.net/problem/4779 4779번: 칸토어 집합 칸토어 집합은 0과 1사이의 실수로 이루어진 집합으로, 구간 [0, 1]에서 시작해서 각 구간을 3등분하여 가운데 구간을 반복적으로 제외하는 방식으로 만든다. 전체 집합이 유한이라고 가정하고, www.acmicpc.net 칸토어 집합은 0과 1사이의 실수로 이루어진 집합으로, 구간 [0, 1]에서 시작해서 각 구간을 3등분하여 가운데 구간을 반복적으로 제외하는 방식으로 만드는 집합이다. 전체 집합이 유한이라고 가정하고, 다음과 같은 과정을 통해서 칸토어 집합을 만들 때, N이 주어졌을 때 결과를 출력하는 것이 목표이다. 1. '-' 이 3^N개 있는 문자열에서 시작한다. 2. 문자열을 3등분 한 뒤,..

1. 문제이해 https://www.acmicpc.net/problem/10815 10815번: 숫자 카드 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 상근이가 가지고 있는 숫자 카드의 개수(N)와 각 숫자카드에 적힌 숫자를 입력받는다. 이어서 정수 M과 M개의 숫자들을 입력받는다. M개의 수들에 대해 각 수가 적힌 숫자 카드를 상근이가 가지고 있으면 1, 아니면 0을 출력한다. 2. 문제풀이 N과 M의 범위는 무난하지만, 입력받는 숫자의 범위가 꽤나 크다. (-10,000,000 N; for (int..

1. 문제이해 https://www.acmicpc.net/problem/11931 11931번: 수 정렬하기 4 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net N개의 정수가 주어질 때, 이를 내림차순으로 정렬하여 출력하는 것이 목표이다. 2. 문제풀이 앞서 풀이한 수 정렬하기 1, 2와 거의 동일한 문제이다. (수 정렬하기 3의 경우에는 앞선 풀이방법대로 하면 시간초과가 발생했다.) 앞선 문제들과 다른 점이라면 입력받은 숫자들을 내림차순으로 정렬해야 한다는 점이다. C++에서 지원하는 sort 함수의 기본형은 다음과 같다...

1. 문제이해 https://www.acmicpc.net/problem/10867 10867번: 중복 빼고 정렬하기 첫째 줄에 수의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째에는 숫자가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. www.acmicpc.net N개의 정수를 입력받아, 중복을 제거해 오름차순으로 정렬하는 것이 목표이다. 2. 문제풀이 N개의 정수를 입력받고, 중복을 제거한 후 정렬하기만 하면 되는 간단한 문제이다. 중복을 제거한다는 점에만 주의해주면 되는데, 필자는 set container를 이용해 풀이했다. set은 key 라 불리는 원소의 집합으로, 중복을 자동으로 제거하고, 삽입이 되면 자동으로 정렬된다. (사실상 set을 쓰면 너무나도 간단한 문..

1. 문제이해 https://www.acmicpc.net/problem/1654 1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 www.acmicpc.net 오영식이 가지고 있는 랜선의 개수 K와 필요한 랜선의 개수 N이 주어진다. K개의 랜선을 이용해 N개의 랜선을 얻으려고 할 때, 만들 수 있는 랜선의 최대 길이를 출력하는 것이 목표이다. 단, N개 이상의 랜선을 만드는 것 또한 N개의 랜선을 만드는 것에 포함된다. 2. 문제풀이 K개의 랜선을 가지고 N개 이상의 랜선을 만드려고 할 때, 만들 수 있는 랜..

1. 문제이해 https://www.acmicpc.net/problem/1292 1292번: 쉽게 푸는 문제 첫째 줄에 구간의 시작과 끝을 나타내는 정수 A, B(1 ≤ A ≤ B ≤ 1,000)가 주어진다. 즉, 수열에서 A번째 숫자부터 B번째 숫자까지 합을 구하면 된다. www.acmicpc.net 1을 한번, 2를 두번, 3을 세번, 이런식으로 1 2 2 3 3 3 4 4 4 4 ... 이루어진 순열이 있다. 어느 일정한 구간이 주어졌을 때, 그 구간의 합을 구하는 것이 목표이다. 2. 문제풀이 1 2 2 3 3 3 4 4 4 4 5 5 5 5 5 ... 위와 같이 자연수 n 이 n 번 나타나는 형태의 수열에서, 주어진 구간의 합을 구하는 문제이다. 주어진 범위가 비교적 크지 않기 때문에, (1 ≤..

1. 문제이해 https://www.acmicpc.net/problem/11866 11866번: 요세푸스 문제 0 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000) www.acmicpc.net 1번부터 N번까지의 사람이 원을 이루며 앉아있다. 정수 K가 주어질 때, 순서대로 K번째 사람을 제거하며, 남은 사람들로 해당 과정을 반복해나간다. N명의 사람이 모두 제거될 때까지 해당 과정을 반복할 때, 제거되는 순서를 요세푸스 순열이라고 한다. N과 K가 주어질 때, 요세푸스 순열을 구하는 것이 목표이다. 2. 문제풀이 이전에 풀이한 백준 1158번 요세푸스 문제와 완전히 동일한 문제이다. (백준에 동일한 문제가 이름만 살짝 틀리게 올라오다니..🤔) 풀이방법 또..

1. 문제이해 https://www.acmicpc.net/problem/2164 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net 1 ~ N 까지의 숫자가 적힌 N장의 카드가 주어질 때, 다음과 같은 규칙을 적용 후, 마지막에 남는 카드에 적힌 숫자를 출력하는 것이 목표이다. 1. 제일 위에 있는 카드를 바닥에 버린다. 2. 그 다음, 제일 위에 있는 카드를 제일 아래에 있는 카드 밑으로 옮긴다. 3. 다음과 같은 동작을 카드가 한 장 남을 때까지 반복한다. 2. 문제풀이 전형적인 큐(queue) 문제이다. 큐..