1. 라인스위핑같은거 안써도됨

2. 왜냐? 4개밖에 없고 크기도 작아서

3. 그래서 걍 무식하게 풀었다.

4. 부등호가 < 인 이유는 <= 면 면적이 2배 이상이 되버린다.

문제

평면에 네 개의 직사각형이 놓여 있는데 그 밑변은 모두 가로축에 평행하다. 이 네 개의 직사각형들은 서로 떨어져 있을 수도 있고, 겹쳐 있을 수도 있고, 하나가 다른 하나를 포함할 수도 있으며, 변이나 꼭지점이 겹칠 수도 있다.

이 직사각형들이 차지하는 면적을 구하는 프로그램을 작성하시오.

입력

입력은 네 줄이며, 각 줄은 직사각형의 위치를 나타내는 네 개의 정수로 주어진다. 첫 번째와 두 번째의 정수는 사각형의 왼쪽 아래 꼭지점의 x좌표, y좌표이고 세 번째와 네 번째의 정수는 사각형의 오른쪽 위 꼭지점의 x좌표, y좌표이다. 모든 x좌표와 y좌표는 1이상이고 100이하인 정수이다.

출력

첫 줄에 네개의 직사각형이 차지하는 면적을 출력한다.


1. - 값조심

2. 반복문으로 처리할시 시간초과 조심

3. 첫 제출전에 시간초과가 날거라는거를 알았고

4. 두 번째 제출전에 - 값이 나올 수 있다는걸 (총 학생수가 - ) 알았다.

문제

총 N개의 시험장이 있고, 각각의 시험장마다 응시자들이 있다. i번 시험장에 있는 응시자의 수는 Ai명이다.

감독관은 총감독관과 부감독관으로 두 종류가 있다. 총감독관은 한 방에서 감시할 수 있는 응시자의 수가 B명이고, 부감독관은 한 방에서 감시할 수 있는 응시자의 수가 C명이다.

각각의 시험장에 총감독관은 오직 1명만 있어야 하고, 부감독관은 여러 명 있어도 된다.

각 시험장마다 응시생들을 모두 감시해야 한다. 이 때, 필요한 감독관 수의 최소값을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 시험장의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다.

둘째 줄에는 각 시험장에 있는 응시자의 수 Ai (1 ≤ Ai ≤ 1,000,000)가 주어진다.

셋째 줄에는 B와 C가 주어진다. (1 ≤ B, C ≤ 1,000,000)

출력

각 시험장마다 응시생을 모두 감독하기 위해 필요한 감독관의 최소 수를 출력한다.


1. 내가 그냥 문제를 풀 수 있을정도로만 이해한 걸 적겠다.

2. 유클리드 기하학은 우리가 흔히 알고있는 공간이다.

3. 택시기하학은 절대값을 + 절대값을 이용하기 때문에 약간 다르다.

4. 택시기하학에서의 원은 45 도 기울어진 정사각형

5. 반지름 + 반지름 = 대각선

6. 대각선 * 반지름 / 2 = 반 (삼각형)

7. 2를 안나누면 넓이

8. 결론 유클리드 기하학의 원 넓이 파이알^2

9. 택시기하학의 원 넓이 2반지름^2


문제

19세기 독일 수학자 헤르만 민코프스키는 비유클리드 기하학 중 택시 기하학을 고안했다.

택시 기하학에서 두 점 T1(x1,y1), T2(x2,y2) 사이의 거리는 다음과 같이 구할 수 있다.

D(T1,T2) = |x1-x2| + |y1-y2|

두 점 사이의 거리를 제외한 나머지 정의는 유클리드 기하학에서의 정의와 같다.

따라서 택시 기하학에서 원의 정의는 유클리드 기하학에서 원의 정의와 같다.

원: 평면 상의 어떤 점에서 거리가 일정한 점들의 집합

반지름 R이 주어졌을 때, 유클리드 기하학에서 원의 넓이와, 택시 기하학에서 원의 넓이를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 반지름 R이 주어진다. R은 10,000보다 작거나 같은 자연수이다.

출력

첫째 줄에는 유클리드 기하학에서 반지름이 R인 원의 넓이를, 둘째 줄에는 택시 기하학에서 반지름이 R인 원의 넓이를 출력한다.

넓이는 소수점 여섯째 자리까지 출력한다.


1. 처음에는 DP 인듯 DP 아닌 반복문으로 풀었었다. (실수로 -1 안해서 계속 오답..)

2. 생각해보니까 b a 중간 c b 중간으로만 이동이 가능한거다.

3. 그래서 생각해보니 큰 수 - 작은 수 1 씩 밀려서 답이 나온다. 결과적으로. (-1 해줘야됨)

4. 틀에박힌 생각으로 DP 로 풀려했었다.

5. 앞으로는 좀 열린 생각을 하도록 노력해봐야지

문제

캥거루 세 마리가 사막에서 놀고 있다. 사막에는 수직선이 하나 있고, 캥거루는 서로 다른 한 좌표 위에 있다.

한 번 움직일 때, 바깥쪽의 두 캥거루 중 한 마리가 다른 두 캥거루 사이의 정수 좌표로 점프한다. 한 좌표 위에 있는 캥거루가 두 마리 이상일 수는 없다.

캥거루는 최대 몇 번 움직일 수 있을까?

입력

첫째 줄에 세 캥거루의 초기 위치 A, B, C가 주어진다. (0 < A < B < C < 100)

출력

캥거루가 최대 몇 번 움직일 수 있는지 출력한다.


1. testcase 만큼 돌림

2. hashmap 사용해서 부위별로 정리

3. result *= v + 1 인 이유는

4. 3 집합에 3 개의 원소들이 있다고 해보자.

5. 3, 3, 3 가능하고 (A, B, C)

6. 3 * 3, 3 * 3  (A * B) (A * C)

7. 3 * 3 * 3 ( A * B * C )

8. 3 * 3 (B * C)

9 정리해서 보면 (A)(A*B)(A*B*C)(A*C)(B)(B*C)(C)

10. A 는 첨에 A 만 추가되고,

11. B 가 추가되는 시점을 보면 A * B 하고, A 가 들어가는 느낌

12. 반복

13. 정리해보면 처음에 A

14. 들어가있는 A 가 A * B 로 변경되면서 기존의 A 를 만들어주기 위함으로 + 1

15. 마지막 출력 - 1 를 해주는 이유는 공집합을 제외하기 위해서

문제

해빈이는 패션에 매우 민감해서 한번 입었던 옷들의 조합을 절대 다시 입지 않는다. 예를 들어 오늘 해빈이가 안경, 코트, 상의, 신발을 입었다면, 다음날은 바지를 추가로 입거나 안경대신 렌즈를 착용하거나 해야한다. 해빈이가 가진 의상들이 주어졌을때 과연 해빈이는 알몸이 아닌 상태로 몇 일동안 밖에 돌아다닐 수 있을까?

입력

첫째 줄에 테스트 케이스가 주어진다. 테스트 케이스는 최대 100이다.

  • 각 테스트 케이스의 첫째 줄에는 해빈이가 가진 의상의 수 n(0 ≤ n ≤ 30)이 주어진다.
  • 다음 n개에는 해빈이가 가진 의상의 이름과 의상의 종류가 공백으로 구분되어 주어진다. 같은 종류의 의상은 하나만 입을 수 있다.

모든 문자열은 1이상 20이하의 알파벳 소문자로 이루어져있으며 같은 이름을 가진 의상은 존재하지 않는다.

출력

각 테스트 케이스에 대해 해빈이가 알몸이 아닌 상태로 의상을 입을 수 있는 경우를 출력하시오.


1. DP 는 당연히 안됨 (2^31 2^31) 나오면 망함

2. 이전에 사용했던 bottom-up 방식을 사용

3. 시간초과가 나네?

4. 약분을 할 수 있으면 약분을 하고 하는방식을 사용

5. N-K 를 하는데 K 가 1이면 시간초과가 나네?

6. 조건문을 넣어보자!

7. BufferedWriter 를 쓰니까 틀리네?

8. 버그!

문제

n개의 원소 중에서 k개를 순서 없이 선택하는 방법의 수는 몇 가지 일까?

입력

입력은 하나 또는 그 이상의 테스트 케이스로 이루어져 있다.

각 테스트 케이스는 한 줄로 이루어져 있으며, 두 자연수 n(n ≥ 1)과 k(0 ≤ k ≤n)로 이루어져 있다.

입력의 마지막 줄에는 0이 두 개 주어진다.

출력

각 테스트 케이스에 대해서, 정답을 출력한다. 항상 정답이 231보다 작은 경우만 입력으로 주어진다.


1. 이전에 사용했던 dp 로 이항계수 구함

2. 어라? 숫자가 높네

3. BigInteger 사용

문제

nCm을 출력한다.

입력

n과 m이 주어진다. (5 ≤ n ≤ 100, 5 ≤ m ≤ 100, m ≤ n)

출력

nCm을 출력한다.


1. 규칙을 찾아보자

2. 맨 뒷자리의 숫자는 짝수만 나온다.

3. 5를 곱하기 전에는 4를 곱한다.

4. 짝수 * 4 > 2

5. 5 의 배수마다 자릿수가 늘어난다

6. 5의 거듭제곱도

문제

N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 N이 주어진다. (0 ≤ N ≤ 500)

출력

첫째 줄에 구한 0의 개수를 출력한다.


저번에 푼걸로는 못 푼다고한다.

그래서 위키백과에서 설명하는 점화식을 사용해서 풀었다.

nCr = n-1Cr-1 + n-1Cr

1. memoization


문제

자연수 N과 정수 K가 주어졌을 때 이항 계수 (NK)를 10,007로 나눈 나머지를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ K ≤ N)

출력

 (NK)를 10,007로 나눈 나머지를 출력한다.


수학공부를 안해서 그런가. 이항계수가 뭔지 몰라서 검색했다.


단순하게 생각하면 N 개의 숫자를 K 번 사용한 조합을 구하면 된다.


1. 공식이 있길래 그냥 썼다.

2. 풀어볼까?

3. 1 * 2 * 3 * 4 * 5 / (2 * 3 * 2 * 1)

4. = 120 / 12

5. = 10

6. 정리해보면

7. 1 ~ N 까지 돈다고 생각해보자

8. 그리고 그 숫자를 i 라고 하면 또 1 + i ~ N 까지 간다. ( 이 과정을 K 번 반복 )

9 그러면 공식이 나올거같은데 머리가 안돌아간다 ㅠ.ㅠ

문제

자연수 N과 정수 K가 주어졌을 때 이항 계수 (NK)를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 0 ≤ K ≤ N)

출력

 (NK)를 출력한다.


+ Recent posts