2019. 7. 23. 13:43
728x90

문제 번호: 11729

문제 제목: 하노이 탑 이동 순서

문제 주소: https://www.acmicpc.net/problem/11729


문제 내용

n개의 하노이 탑을 이동하는데 필요한 횟수와 이동 과정을 출력한다. 이동은 1에서 3으로 옮기는 것을 기준으로 한다.


테스트 케이스

3

7
1 3
1 2
3 2
1 3
2 1
2 3
1 3


문제 풀이

재귀 함수 내에서 재귀함수를 호출 할 때 매개변수를 어떻게 넘겨줄 것이냐를 고려하여야 한다.
메인 함수는 다음과 같이 구성한다.
1. n을 입력 받는다.
2. 재귀 함수를 호출한다. 이 때 매개변수는 n, 출발지, 목적지, 결과 문자열 이다.
3. 하노이 탑에서 반환된 횟수를 출력한다.
4. 결과 문자열 내용을 출력한다.


하노이 탑에서의 재귀함수 호출은 아래와 같이 이루어진다.
1. n-1이 출발지에서 경유지로 이동한다.
2. n이 출발지에서 목적지로 이동한다.
3. n-1이 경유지에서 목적지로 이동한다.
위 구성대로 재귀함수를 짜서 구현하면 된다.


풀이 코드


728x90

'공부 > 문제풀기' 카테고리의 다른 글

백준 11720 - 숫자의 합  (0) 2019.07.24
백준 11654 - 아스키 코드  (0) 2019.07.24
백준 2447 - 별 찍기 - 10  (0) 2019.07.23
백준 10872 - 팩토리얼  (0) 2019.07.23
백준 1065 - 한수  (0) 2019.07.23
Posted by 아야카
2019. 7. 23. 13:06
728x90

문제 번호: 2447

문제 제목: 별 찍기 - 10

문제 주소: https://www.acmicpc.net/problem/2447


문제 내용

가운데가 비어있는 사각형 패턴을 그린다. 입력은 3의 n제곱으로만 이루어진다.


테스트 케이스

3

***
* *
***

9

*********
* ** ** *
*********
***   ***
* *   * *
***   ***
*********
* ** ** *
*********


문제 풀이

여태까지의 별 찍기 문제와 달리 배열을 만들고 배열에 무작위 접근을 하여 그림을 그려야 하는 문제다.
메인 함수는 아래와 같은 순서로 작동된다.
1. 배열을 생성하고 내용을 공백으로 초기화 한다.
 > 공백으로 초기화 하지 않을 경우 더미 값이 남아 출력에 문제 생긴다.
2. 배열에 별을 그리도록 재귀함수를 호출한다. 최초 호출 시의 좌표는 0, 0으로 한다.
3. 배열에 그려진 입력된 내용을 출력한다.

재귀함수는 아래와 같은 순서로 작동된다.
0. 매개 변수는 4개를 받는다.
 > 배열, 가로 위치, 세로 위치, 사이즈
1. 사이즈가 1보다 큰 경우에는 for문을 3 * 3에서 아래와 같이 재귀함수를 호출한다.
 > 배열, 가로 + 사이즈 * i, 세로 + 사이즈 * i, 사이즈 / 3
2. for문을 3 * 3에서 i != 1 || j != 1인 곳에 *을 그리도록 한다.


풀이 코드


728x90

'공부 > 문제풀기' 카테고리의 다른 글

백준 11654 - 아스키 코드  (0) 2019.07.24
백준 11729 - 하노이 탑 이동 순서  (0) 2019.07.23
백준 10872 - 팩토리얼  (0) 2019.07.23
백준 1065 - 한수  (0) 2019.07.23
백준 4673 - 셀프 넘버  (0) 2019.07.23
Posted by 아야카
2019. 7. 23. 12:24
728x90

문제 번호: 10872

문제 제목: 팩토리얼

문제 주소: https://www.acmicpc.net/problem/10872


문제 내용

입력 된 수 N의 팩토리얼을 출력한다.


테스트 케이스

10

3628800


문제 풀이

단계별 풀이에서는 재귀 함수를 정의해보라고 했지만 굳이 그래야 할 필요는 없는 문제.
재귀함수로 푼다면 factorial 함수의 매개변수로 int n을 받고 아래 조건에 따라 작동하게 하면 된다.
1. n이 0이거나 1인 경우 1을 반환 (입력 범위가 0 ≤ N 이다.)
2. 그렇지 않은 경우 n * factorial (n - 1)을 반환
결과 값 범위는 최대 4억이므로 int를 그대로 사용해도 무방하다.


풀이 코드

728x90

'공부 > 문제풀기' 카테고리의 다른 글

백준 11729 - 하노이 탑 이동 순서  (0) 2019.07.23
백준 2447 - 별 찍기 - 10  (0) 2019.07.23
백준 1065 - 한수  (0) 2019.07.23
백준 4673 - 셀프 넘버  (0) 2019.07.23
백준 15596 - 정수 N개의 합  (0) 2019.07.23
Posted by 아야카
2019. 7. 23. 12:14
728x90

문제 번호: 1065

문제 제목: 한수

문제 주소: https://www.acmicpc.net/problem/1065


문제 내용

입력한 숫자보다 작거나 같은 한수의 개수를 출력한다. 입력 범위는 1000 이하다.


테스트 케이스

1

1

110

99

210

105

1000

144


문제 풀이

0. 두 자리 수 이하는 모두 한수다.
1. 등차 수열을 이루는 세 수에 대해 N0 + N2 = N1 * 2 다.
 1.1. 2 특성에 의거, 백의 자리 수 + 일의 자리 수 = 십의 자리 수  * 2로 볼 수 있다.
 1.2. 백의 자리 수는 / 100 정도로만 해두는게 낫다. 이러면 1000이 입력됐을 때 10 + 0 = 0 * 2가 되어 한수가 아닌 것으로 처리된다.
2. 해당 조건이 성립한다면 한수인 것으로 집계한다.
3. 1~2를 반복한다.
※ 세 자리 수 중에서 100 ~ 110까지는 한수가 아니므로 111부터 반복문을 돌리면 된다.


풀이 코드

728x90

'공부 > 문제풀기' 카테고리의 다른 글

백준 2447 - 별 찍기 - 10  (0) 2019.07.23
백준 10872 - 팩토리얼  (0) 2019.07.23
백준 4673 - 셀프 넘버  (0) 2019.07.23
백준 15596 - 정수 N개의 합  (0) 2019.07.23
백준 4344 - 평균은 넘겠지  (0) 2019.07.22
Posted by 아야카
2019. 7. 23. 11:57
728x90

문제 번호: 4673

문제 제목: 셀프 넘버

문제 주소: https://www.acmicpc.net/problem/4673


문제 내용

숫자 n + n의 각 자리수의 합으로 만들어 낼 수 없는 숫자인 셀프넘버를 출력한다. 대상 숫자의 범위는 1~9999.


테스트 케이스

없음

1
3
5
7
9
20
31
42
53
64
.
.
.
9903
9914
9925
9927
9938
9949
9960
9971
9982
9993



문제 풀이

에라토스테네스의 체를 이용해 풀어야 하는 문제다.
1. bool타입으로 10036개짜리 배열을 생성한다. 초기화 값은 false.
2. 1부터 수식을 적용하여 나온 숫자에 해당하는 인덱스를 true로 변경한다.
3. 현재 인덱스가 false일 경우 현재 인덱스 값을 출력한다.
4. 2~3 반복.


풀이 코드



728x90

'공부 > 문제풀기' 카테고리의 다른 글

백준 10872 - 팩토리얼  (0) 2019.07.23
백준 1065 - 한수  (0) 2019.07.23
백준 15596 - 정수 N개의 합  (0) 2019.07.23
백준 4344 - 평균은 넘겠지  (0) 2019.07.22
백준 8958 - OX퀴즈  (0) 2019.07.22
Posted by 아야카
2019. 7. 23. 02:06
728x90

문제 번호: 15596

문제 제목: 정수 N개의 합

문제 주소: https://www.acmicpc.net/problem/15596


문제 내용

입력이 주어졌을 때 구성의 합계를 반환하는 sum 함수를 구현한다. 


테스트 케이스

없음


문제 풀이

C
반복문을 0~n까지 진행하고, a[i]의 값을 ans에 더해준다.

C++
반복문을 0~a.size()까지 진행한다. a[i]의 값을 ans에 더해준다.

Python
반복문은 i로 a까지 진행한다. i의 값을 ans에 더해준다.

Java
반복문을 0~a.length까지 진행한다. a[i]의 값을 ans에 더해준다.

Go
반복문을 a로 진행한다. r에 i를 더해준다.


풀이 코드


728x90

'공부 > 문제풀기' 카테고리의 다른 글

백준 1065 - 한수  (0) 2019.07.23
백준 4673 - 셀프 넘버  (0) 2019.07.23
백준 4344 - 평균은 넘겠지  (0) 2019.07.22
백준 8958 - OX퀴즈  (0) 2019.07.22
백준 1546 - 평균  (0) 2019.07.22
Posted by 아야카
2019. 7. 22. 15:19
728x90

문제 번호: 4344

문제 제목: 평균은 넘겠지

문제 주소: https://www.acmicpc.net/problem/4344


문제 내용

학생들의 점수를 입력 받으면 입력 받은 점수 중에서 평균을 넘는 비율이 얼마나 되는지 출력한다.
출력 범위는 소수점 셋째 자리까지.


테스트 케이스

5
5 50 50 70 80 100
7 100 95 90 80 70 60 50
3 70 90 80
3 70 90 81
9 100 99 98 97 96 95 94 93 91


40.000%
57.143%
33.333%
66.667%
55.556%


문제 풀이

0. 학생 수가 1000명으로 제한되어 있으므로 1000으로 정적할당을 해도 무방하다.
1. 평균을 구한다.
2. 배열을 순회하며 평균보다 높은지 확인하여 count++을 한다.
3. 결과를 출력한다.


풀이 코드



728x90

'공부 > 문제풀기' 카테고리의 다른 글

백준 4673 - 셀프 넘버  (0) 2019.07.23
백준 15596 - 정수 N개의 합  (0) 2019.07.23
백준 8958 - OX퀴즈  (0) 2019.07.22
백준 1546 - 평균  (0) 2019.07.22
백준 3052 - 나머지  (0) 2019.07.22
Posted by 아야카
2019. 7. 22. 14:56
728x90

문제 번호: 8958

문제 제목: OX퀴즈

문제 주소: https://www.acmicpc.net/problem/8958


문제 내용

OX 퀴즈 결과 점수를 구하여 출력한다.
 - O를 연속으로 맞을 경우 획득하는 점수가 1점씩 추가로 증가한다.
 - 틀린 경우 추가 점수는 초기화된다.


테스트 케이스

5
OOXXOXXOOO
OOXXOOXXOO
OXOXOXOXOXOXOX
OOOOOOOOOO
OOOOXOOOOXOOOOX


10
9
7
55
30


문제 풀이

연속으로 문제를 맞출 때마다 획득해야 할 점수를 1씩 증가 시켜서 총점에 합산하면 된다.
틀릴 경우에는 획득해야 할 점수를 초기화한다.


풀이 코드



728x90

'공부 > 문제풀기' 카테고리의 다른 글

백준 15596 - 정수 N개의 합  (0) 2019.07.23
백준 4344 - 평균은 넘겠지  (0) 2019.07.22
백준 1546 - 평균  (0) 2019.07.22
백준 3052 - 나머지  (0) 2019.07.22
백준 2577 - 숫자의 개수  (0) 2019.07.22
Posted by 아야카