백준온라인저지 23

백준 온라인 저지 1759번 암호 만들기

문제 출처 : https://www.acmicpc.net/problem/1759 1759번: 암호 만들기 첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다. www.acmicpc.net 풀이과정 문제의 입력범위가 작으므로 완전탐색 방법으로 해결할 수 있다. DFS로 가능한 모든 경우의 수를 만들고 검증 메소드를 사용해서 최소 한 개 이상의 모음과 최소 두 개 이상의 자음을 가진 문자열만 출력하도록 구현했다. 문제에서 알파벳이 암호에서 증가하는 순서로 배열된다고 했으므로 입력받은 알파벳을 사전 순으로 정렬 후 경우의 수를 만들면 별도로 순서를 검사할 필요가 없다. 소스코드..

1110번 더하기 사이클

문제 출처 : https://www.acmicpc.net/problem/1110 1110번: 더하기 사이클 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, www.acmicpc.net 풀이 과정 1. 우선 값을 분리하는게 중요합니다. 먼저 입력받은 N을 10의 자리와 1의 자리로 분리하고 그 합을 구했습니다. 2. 합을 구한 후 분리한 1의 자리의 값과 구한 합의 1의 자리를 붙여 새로운 수를 만들었습니다. 3. 가장 처음 입력받은 N과 같아질 때 까지 반복하면 문제를 해결할 수 있습니다. 소스 코드 더보기 #include using namespac..

2292번 벌집

문제 출처 : https://www.acmicpc.net/problem/2292 2292번: 벌집 위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌�� www.acmicpc.net 풀이 과정 규칙을 찾는 문제였습니다. 거리가 커질수록 갈 수 있는 방의 개수가 이전 거리에서 갈 수 있는 방의 개수에서 6의 배수로 증가합니다. (1개 -> 6개 -> 12개) 따라서 방의 개수를 증가시키면서 방의 총합계를 계산하여 입력받은 n이 범위 내에 들어올 경우 반복문을 종료하고 그 거리를 출력하도록 코드를 작성했습니다. 소스 코드 더보기 1 2 3 4 5 6 7 8 9 10 11..

2193번 이친수

문제 출처 : https://www.acmicpc.net/problem/2193 2193번: 이친수 0과 1로만 이루어진 수를 이진수라 한다. 이러한 이진수 중 특별한 성질을 갖는 것들이 있는데, 이들을 이친수(pinary number)라 한다. 이친수는 다음의 성질을 만족한다. 이친수는 0으로 시작하지 않 www.acmicpc.net 풀이 과정 n= 1 -> 1 1개 n= 2 -> 10 1개 n= 3 -> 100, 101 2개 n= 4 -> 1000, 1001, 1010 3개 n= 5 -> 10000, 10001, 10010, 10100, 10101 5개 예시를 통해 피보나치 수열이 나옴을 알 수 있었습니다. 피보나치 수열의 점화식은 다음과 같습니다. Fn+2 = Fn+1 + Fn ( F0=0, F1=..

10828번 스택

문제 출처 : https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 � www.acmicpc.net 풀이 과정 자료구조중 하나인 스택을 구현하는 문제였습니다. 스택은 LIFO(Last In First Out)의 특성을 가지기 때문에 가장 나중에 삽입된 데이터가 가장 먼저 삭제되는 구조입니다. top이라는 변수를 인덱스로 사용하여 데이터를 삽입 또는 삭제가 가능하게 구현하였고, 스택의 배열 인덱스를 0부터 사용하기 위해서 초기 top변수의 값을 -1로 초기화 했..

4344번 평균은 넘겠지

문제 출처 : https://www.acmicpc.net/problem/4344 4344번: 평균은 넘겠지 문제 대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다. 입력 첫째 줄에는 테스트 케이스의 개수 C가 주어진다. 둘째 줄부터 각 � www.acmicpc.net 풀이 과정 각 테스트케이스마다 평균을 넘는 학생들의 비율을 구한 후 문제에서 요구한 출력 형식에 맞추면 되는 문제였습니다. 출력 형식은 cout의 조정자를 사용했습니다. setprecision : 정수부와 소수부를 합친 자릿수를 지정합니다. 예를 들어 123.454의 setprecision(5)는 123.45를 출력합니다. 또한 나머지 뒷부분은 반올림하여 나타내기 때문에 123.4..

2753번 윤년

문제 출처 : https://www.acmicpc.net/problem/2753 2753번: 윤년 연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오. 윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다. 예를 들어, 2012년은 4의 배수이면서 100의 배수가 아니라서 윤년이다. 1900년은 100의 배수이고 400의 배수는 아니기 때문에 윤년이 아니다. 하지만, 2000년은 400의 배수이기 때문에 윤년이다. www.acmicpc.net 풀이 과정 문제에 적혀있는 윤년 규칙을 이용하여 문제를 해결했습니다. 4의 배수가 아닌 경우를 제외한 윤년이 되는 규칙은 다음과 같습니다. 소스 코드 더보기 1 2 3 4 5 6 7 8 9 10 11 12 ..

1302번 베스트셀러

문제 출처 : https://www.acmicpc.net/problem/1302 1302번: 베스트셀러 첫째 줄에 오늘 하루 동안 팔린 책의 개수 N이 주어진다. 이 값은 1,000보다 작거나 같은 자연수이다. 둘째부터 N개의 줄에 책의 제목이 입력으로 들어온다. 책의 제목의 길이는 50보다 작거나 같고, 알파벳 소문자로만 이루어져 있다. www.acmicpc.net 풀이 과정 책의 제목이 중복으로 입력될 수 있고, 책의 팔린 횟수를 세야 하는 문제였기 때문에 string을 key로 하여 map을 사용했습니다. 1. 책의 제목을 입력으로 받을 때마다 횟수를 증가시켰습니다. 2. map은 default로 key 값을 기준으로 데이터를 오름차순으로 정렬하기 때문에 반복자를 사용하여 앞에서부터 가장 많이 팔린..

2884번 알람 시계

문제 출처 : https://www.acmicpc.net/problem/2884 2884번: 알람 시계 문제 상근이는 매일 아침 알람을 듣고 일어난다. 알람을 듣고 바로 일어나면 다행이겠지만, 항상 조금만 더 자려는 마음 때문에 매일 학교를 지각하고 있다. 상근이는 모든 방법을 동원해보았지만, 조금만 더 자려는 마음은 그 어떤 것도 없앨 수가 없었다. 이런 상근이를 불쌍하게 보던, 창영이는 자신이 사용하는 방법을 추천해 주었다. 바로 "45분 일찍 알람 맞추기"이다. 이 방법은 단순하다. 원래 맞춰져있는 알람을 45분 앞서는 시간으로 바꾸는 것이다. 어차피 www.acmicpc.net 풀이 과정 문제 설명에 나와있듯이 단순 구현 문제로, 현재 시간에서 45분 이른 시간을 구하면 되는 문제입니다. 계산하기..

11286번 절댓값 힙

문제 출처 : https://www.acmicpc.net/problem/11286 11286번: 절댓값 힙 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0이라면 배열에서 절댓값이 가장 작은 값을 출력하고 그 값을 배열에서 제거하는 경우이다. 입력되는 정수는 -231보다 크고, 231보다 작다. www.acmicpc.net 풀이 과정 STL의 priority_queue에 functor를 구현해서 문제를 해결했습니다. 절댓값의 크기가 다른 경우에는 절댓값을 기준으로 오름차순으로 정렬하고, 절댓값의 크기가 같은 경우에는 절댓값을 씌우지 않은 값을 ..