'공부/문제풀기'에 해당되는 글 119건

  1. 2019.08.08 백준 1436 - 영화감독 숌
  2. 2019.08.08 백준 1018 - 체스판 다시 칠하기
  3. 2019.08.08 백준 7568 - 덩치
  4. 2019.08.07 프로젝트 오일러 문제 18
  5. 2019.08.07 백준 2231 - 분해합
  6. 2019.08.07 백준 2798 - 블랙잭
  7. 2019.08.06 백준 1002 - 터렛
  8. 2019.08.06 백준 3053 - 택시 기하학
2019. 8. 8. 14:09
728x90

문제 번호: 1436

문제 제목: 영화감독 숌

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


문제 내용

666을 포함하는 N번째 숫자를 출력한다.


테스트 케이스

1

666

2

1666

10000

2666799


문제 풀이

현재 수 n에 대해 1000으로 나눠서 666이면 횟수를 +1 한다.
아닐 경우 n을 10으로 나눈 몫에 대해 1000으로 나눈 나머지가 666인지 확인한다.
위 과정을 n >= 666인 동안 반복한다.
횟수가 입력받은 N과 동일하면 해당 시점의 숫자를 출력한다.


풀이 코드



728x90

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

백준 2751 - 수 정렬하기 2  (0) 2019.08.13
백준 2750 - 수 정렬하기  (0) 2019.08.13
백준 1018 - 체스판 다시 칠하기  (0) 2019.08.08
백준 7568 - 덩치  (0) 2019.08.08
프로젝트 오일러 문제 18  (0) 2019.08.07
Posted by 아야카
2019. 8. 8. 11:59
728x90

문제 번호: 1018

문제 제목: 체스판 다시 칠하기

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


문제 내용

M * N 크기의 체스판이 주어졌을 때 8*8 크기로 자른 후 흑백이 교대로 나오도록 칸을 교체해야 하는 갯수가 가장 적은 경우는 몇 개인지 출력한다.


테스트 케이스

8 8
WBWBWBWB
BWBWBWBW
WBWBWBWB
BWBBBWBW
WBWBWBWB
BWBWBWBW
WBWBWBWB
BWBWBWBW

1

8 8
WBWBWBWB
BWBWBWBW
WBWBWBWB
BWBWBWBW
WBWBWBWB
BWBWBWBW
WBWBWBWB
BWBWBWBW

0

8 8
BWBWBWBW
WBWBWBWB
BWBWBWBW
WBWBWBWB
BWBWBWBW
WBWBWBWB
BWBWBWBW
WBWBWBWB

0

11 8
BBBBBBBB
BBBBBBBB
BBBBBBBB
BBBBBBBB
BBBBBBBB
BBBBBBBB
BBBBBBBB
BBBBBBBB
BBBBBBBB
BBBBBBBB
BBBBBBBB

32

8 11
BBBBBBBBBBB
BBBBBBBBBBB
BBBBBBBBBBB
BBBBBBBBBBB
BBBBBBBBBBB
BBBBBBBBBBB
BBBBBBBBBBB
BBBBBBBBBBB

32 


문제 풀이

1. 데이터를 입력 받는다. N을 먼저 입력 받고, M을 그 다음에 입력 받는다.
2. 기준이 되는 8 * 9 사이즈 체스판 배열을 만들어 아래와 같이 초기화한다.
WBWBWBWB - WB 판일 때의 비교 시작
BWBWBWBW - BW 판일 때의 비교 시작
WBWBWBWB
BWBWBWBW
WBWBWBWB
BWBWBWBW
WBWBWBWB
BWBWBWBW
WBWBWBWB

3. 입력받은 데이터와 체스판을 !=으로 비교연산 하여 그 합계와 현재 값을 비교한다.
4. 3을 통해 구한 가장 적은 합계를 출력한다.
※ 다른 테스트 케이스는 다 맞는데 11 8, 8 11이 틀린다면 반복문을 돌리는 기준이 잘못됐을 가능성이 높다.


풀이 코드



728x90

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

백준 2750 - 수 정렬하기  (0) 2019.08.13
백준 1436 - 영화감독 숌  (0) 2019.08.08
백준 7568 - 덩치  (0) 2019.08.08
프로젝트 오일러 문제 18  (0) 2019.08.07
백준 2231 - 분해합  (0) 2019.08.07
Posted by 아야카
2019. 8. 8. 09:43
728x90

문제 번호: 7568

문제 제목: 덩치

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


문제 내용

몸무게와 키로 이루어진 덩치값이 주어졌을 때 A가 B보다 몸무게, 키 값이 모두 크면 A는 B보다 덩치가 크다고 한다.
알 수 없을 때는 동일한 덩치라고 한다.
자신보다 덩치가 큰 사람보다는 등수가 낮지만, 자신과 동일한 덩치끼리는 등수가 같다.
덩치값 배열이 주어졌을 때 각자의 등수를 입력된 순서대로 출력한다.


테스트 케이스

5
55 185
58 183
88 186
60 175
46 155

2 2 1 2 5

2
10 10
10 10

1 1

5
10 10
20 20
30 30
40 40
50 50

5 4 3 2 1

5
50 50
40 40
30 30
20 20
10 10

1 2 3 4 5

5
10 50
20 40
30 30
40 20
50 10

1 1 1 1 1


문제 풀이

각 인원에 대해 배열을 할 때 몸무게, 키와 더불어 N으로 초기화 되는 랭킹 변수를 선언한다.
이후 각 인원간에 비교를 진행하면서 A.weight > B.weight && A.height > B.height 처럼 명확한 경우에는 우위가 있는 쪽의 랭킹 값을 1 낮추고, 우위를 가릴 수 없는 경우에는 양쪽 모두의 랭킹값을 낮춘다.
조정이 모두 완료되면 입력된 순서대로 랭킹 값을 출력해준다.


풀이 코드

728x90

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

백준 1436 - 영화감독 숌  (0) 2019.08.08
백준 1018 - 체스판 다시 칠하기  (0) 2019.08.08
프로젝트 오일러 문제 18  (0) 2019.08.07
백준 2231 - 분해합  (0) 2019.08.07
백준 2798 - 블랙잭  (0) 2019.08.07
Posted by 아야카
2019. 8. 7. 18:50
728x90

Maximum path sum I

Problem 18

By starting at the top of the triangle below and moving to adjacent numbers on the row below, the maximum total from top to bottom is 23.

3
7 4
4 6
8 5 9 3

That is, 3 + 7 + 4 + 9 = 23.

Find the maximum total from top to bottom of the triangle below:

75
95 64
17 47 82
18 35 87 10
20 04 82 47 65
19 01 23 75 03 34
88 02 77 73 07 63 67
99 65 04 28 06 16 70 92
41 41 26 56 83 40 80 70 33
41 48 72 33 47 32 37 16 94 29
53 71 44 65 25 43 91 52 97 51 14
70 11 33 28 77 73 17 78 39 68 17 57
91 71 52 38 17 14 91 43 58 50 27 29 48
63 66 04 68 89 53 67 30 73 16 69 87 40 31
04 62 98 27 23 09 70 98 73 93 38 53 60 04 23

NOTE: As there are only 16384 routes, it is possible to solve this problem by trying every route. However, Problem 67, is the same challenge with a triangle containing one-hundred rows; it cannot be solved by brute force, and requires a clever method! ;o)

최상단 시작 지점에서 가장 아래층까지 내려가면서 거치는 경로 중 값의 합이 가장 큰 값은 몇인가.

목적지가 어디가 될지 알 수 없으므로 목적이 후보에서부터 출발지로 거슬러 올라가는 방식으로 구해야 한다. i + 1의 값과 i의 값을 합하여 합계가 큰 쪽은 남겨두는 방식으로 출발지점까지 거슬러 올라가면 합계가 가장 큰 값을 빠르게 구할 수 있다.
설명으로 나온 숫자 배열을 예로 들면 아래와 같이 진행된다.

이와 같은 방식으로 진행하면 결과 값을 빠르게 얻을 수 있다.



728x90

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

백준 1018 - 체스판 다시 칠하기  (0) 2019.08.08
백준 7568 - 덩치  (0) 2019.08.08
백준 2231 - 분해합  (0) 2019.08.07
백준 2798 - 블랙잭  (0) 2019.08.07
백준 1002 - 터렛  (0) 2019.08.06
Posted by 아야카
2019. 8. 7. 18:01
728x90

문제 번호: 2231

문제 제목: 분해합

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


문제 내용

분해합은 숫자 i에 i의 각 자리 수를 모두 합한 값을 의미한다. i를 분해합하여 N이 나오는 경우 i는 N의 생성자라 한다.
입력된 수 N의 생성자를 출력한다.


테스트 케이스

1

0

2

1

216

198

999999

999954

1000000

0


문제 풀이

브루트 포스로 푸는 문제지만, 1부터 시작하는건 매우 비효율적이므로 범위를 어느 정도 좁힐 필요가 있다.
생성자 수 + 생성자의 각 숫자를 모두 합해서 N이 나와야 하므로 (N - 자리수 * 9) ~ (N - 1) 이 탐색 범위가 된다.
10 이하인 수는 짝수에게만 생성자가 있으므로 그에 맞춰 코드를 작성하면 된다.


풀이 코드



728x90

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

백준 7568 - 덩치  (0) 2019.08.08
프로젝트 오일러 문제 18  (0) 2019.08.07
백준 2798 - 블랙잭  (0) 2019.08.07
백준 1002 - 터렛  (0) 2019.08.06
백준 3053 - 택시 기하학  (0) 2019.08.06
Posted by 아야카
2019. 8. 7. 17:37
728x90

문제 번호: 2798

문제 제목: 블랙잭

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


문제 내용

N개의 수열 내에서 세 개의 수를 조합하였을 때 M을 넘지 않는 근사값은 몇인지 출력한다.


테스트 케이스

5 21
6 7 8 9 10

21

5 21
10 9 8 7 6

21

3 300000
100000 100000 100000

300000

10 10
1 2 1 2 1 2 1 2 1 2

6


문제 풀이

브루트 포스로 푸는 문제다. 모든 조합을 확인하여 M과 근사한 값을 찾아내면 된다.
M과 동일한 값인 경우에는 문제의 답이 나온 것이므로 그대로 결과를 출력하고 종료하면 된다.


풀이 코드



728x90

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

프로젝트 오일러 문제 18  (0) 2019.08.07
백준 2231 - 분해합  (0) 2019.08.07
백준 1002 - 터렛  (0) 2019.08.06
백준 3053 - 택시 기하학  (0) 2019.08.06
백준 4153 - 직각삼각형  (0) 2019.08.06
Posted by 아야카
2019. 8. 6. 13:03
728x90

문제 번호: 1002

문제 제목: 터렛

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


문제 내용

2차원 좌표 A(x1, y1), B(x2, y2)가 주어지고 각 좌표에 대한 거리 r1, r2가 주어졌을 때 조건이 성립하는 점의 개수를 출력한다. 무한대일 경우에는 -1을 출력한다.
입력은 x1, y1, r1, x2, y2, r2 순서로 이루어진다.


테스트 케이스

8
0 0 13 40 0 37
0 0 3 0 7 4
0 0 2 5 5 2
0 0 12 10 0 3
0 0 12 10 0 2
0 0 12 10 0 1
1 1 1 1 1 1
1 1 1 1 1 5


2
1
0
2
1
0
-1
0


문제 풀이

케이스가 세 가지로 나뉜다. A와 B 사이에 있는 경우, A와 B사이에 있지 않은 경우, A와 B가 같은 경우.
목표가 A와 B 사이에 있는 경우에는 r1 + r2의 절대값을 A - B의 거리와 비교하여 결과를 출력하고
목표가 A와 B 사이에 없는 경우에는 r1 - r2의 절대값을 A - B의 거리와 비교하여 결과를 출력한다.
만약 A와 B의 위치가 같다면 r1와 r2를 비교하는 것만으로 충분하다.


풀이 코드



728x90

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

백준 2231 - 분해합  (0) 2019.08.07
백준 2798 - 블랙잭  (0) 2019.08.07
백준 3053 - 택시 기하학  (0) 2019.08.06
백준 4153 - 직각삼각형  (0) 2019.08.06
백준 3009 - 네 번째 점  (0) 2019.08.06
Posted by 아야카
2019. 8. 6. 11:52
728x90

문제 번호: 3053

문제 제목: 택시 기하학

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


문제 내용

반지름 R이 주어졌을 때 유클리드 기하학에서의 원의 넓이와 택시 기하학에서의 원의 넓이를 출력한다.


테스트 케이스

1

3.141593
2.000000

2

12.566371
8.000000


문제 풀이

설명에 원이라는 표현이 들어가서 혼란이 있을 수 있지만 택시 기하학에서 같은 거리라는 것은 각 변의 길이가 동일한 마름모 모양을 의미한다. #참고링크 
따라서 택시 기하학의 넓이는 R * R * 2로 나타낼 수 있다.
유클리드 기하학과 관련하여 소수점 6자리까지 출력되어야 하므로 cout << fixed를 해줘야 한다.
이 문제에서 사용하는 π는 소수점 12자리까지 필요하며 (3.141592653589), cmath 상수인 M_PI를 이용해도 무방하다.


풀이 코드

728x90

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

백준 2798 - 블랙잭  (0) 2019.08.07
백준 1002 - 터렛  (0) 2019.08.06
백준 4153 - 직각삼각형  (0) 2019.08.06
백준 3009 - 네 번째 점  (0) 2019.08.06
백준 1085 - 직사각형에서 탈출  (0) 2019.08.06
Posted by 아야카