일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 자료구조
- 다이나믹프로그래밍
- MySQL
- 그리디알고리즘
- Image Classification
- 수학
- 정수론
- 백준알고리즘
- 구현
- C언어
- C++
- SQL
- 문자열
- Today
- Total
목록코딩테스트/📗 백준 (BOJ) (112)
초보 개발자의 이야기, 릿허브

1. 문제이해 https://www.acmicpc.net/problem/2292 2292번: 벌집 위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌 www.acmicpc.net 위의 그림과 같이 육각형 모양의 벌집이 있다. 중앙의 방 1부터 시작해서, 돌아가면서 1씩 증가하는 번호를 주소로 매길 때, 입력으로 주어진 방까지 최소 몇 개의 방을 지나야 하는지 출력하는 것이 목표이다. 2. 문제풀이 위와 같은 벌집 모양의 방들에서, 1번에서 N번째 방까지 몇 개의 방을 지나야 하는지 구하는 문제이다. 아래 그림을 자세히 보자. 위 그림에서 볼 수 있듯, 문제의 벌집 모..

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/11728 11728번: 배열 합치기 첫째 줄에 배열 A의 크기 N, 배열 B의 크기 M이 주어진다. (1 ≤ N, M ≤ 1,000,000) 둘째 줄에는 배열 A의 내용이, 셋째 줄에는 배열 B의 내용이 주어진다. 배열에 들어있는 수는 절댓값이 109보다 작거 www.acmicpc.net 두 배열이 주어질 때, 두 배열을 합친 다음 정렬해서 출력하는 것이 목표이다. 2. 문제풀이 문제를 제대로 읽자... 자체 하드모드로 풀이한 문제이다.. 배열이 아니라 집합으로 보고 합집합을 구하는줄 알고 중복되는 원소는 제거하다가 왜 안되지 무한반복... 결론은 문제를 잘못읽은거였다.. 여러분들은 문제 꼼꼼히 읽으세요...^^ 문제 자체는 두 배..

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 ≤..