C/C++ 12

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분 이른 시간을 구하면 되는 문제입니다. 계산하기..

1238번 파티

백준 온라인 저지 1238번 파티 문제 출처 : https://www.acmicpc.net/problem/1238 1238번: 파티 문제 N개의 숫자로 구분된 각각의 마을에 한 명의 학생이 살고 있다. 어느 날 이 N명의 학생이 X (1 ≤ X ≤ N)번 마을에 모여서 파티를 벌이기로 했다. 이 마을 사이에는 총 M개의 단방향 도로들이 있고 i번째 길을 지나는데 Ti(1 ≤ Ti ≤ 100)의 시간을 소비한다. 각각의 학생들은 파티에 참석하기 위해 걸어가서 다시 그들의 마을로 돌아와야 한다. 하지만 이 학생들은 워낙 게을러서 최단 시간에 오고 가기를 원한다. 이 도로들은 단방향이기 때 www.acmicpc.net 풀이 과정 처음 문제를 읽고 최단경로를 구하는 알고리즘이라고 판단했고 가장 쉽게 구현할 수 ..

1991번 트리순회

백준 온라인 저지 1991번 트리순회문제 출처 : https://www.acmicpc.net/problem/1991풀이 과정해당 문제는 각각의 노드가 왼쪽과 오른쪽의 자식 노드를 가질 수 있는 구조인 이진 트리입니다. 따라서 구조체를 사용하여 노드를 만들었고, 여러개의 노드를 사용하므로 구조체 배열을 선언했습니다. 입력을 정수가아닌 문자로 받기 때문에 이를 구조체 배열의 인덱스와 매칭시키기 위해서는 정수로의 변환이 필요하기 때문에 아스키코드를 연산하여 배열에 저장할 수 있도록 했습니다. 순회는 일반적으로 사용하는 재귀함수를 사용하여 구현했습니다. 루트가 탐색되는 순서에 따라 전위 순회, 중위 순회, 후위 순회로 나뉘어집니다. 루트 -> 왼쪽 -> 오른쪽 왼쪽 -> 루트 -> 오른쪽 왼쪽 -> 오른쪽 ->..