목록콤퓨타 왕왕기초/PS (135)
파게로그
문제 링크: 1002번 터렛 https://www.acmicpc.net/problem/1002 반지름이 r1, r2인 두 원은 다음과 같은 위치 관계를 가질 수 있다. 1. 서로 다른 두 점에서 만난다. |r2-r1| r1+r2 3-2. 한 원이 다른 원의 내부에 있을 경우(반지름이 다른 동심원 포함) d < |r2-r1| 4. 무수히 많은 점에서 만난다(반지름이 같은 동심원). 두 원의 중심이 같고, r1 = r2 그런데 이 문제를 풀 때, d를 구할 때에는 점과 점 사이의 거리 공식을 이용해야 하고, 이는 기본적으..
문제 링크: 3053번 택시 기하학 https://www.acmicpc.net/problem/3053 생소한 개념을 접해서 기록을 남긴다. import math r = int(input()) pi = math.pi print(pi*r*r) print(2*r*r)
문제 링크: 3009번 네 번째 점 https://www.acmicpc.net/problem/9020 원리는 쉬운데 구현에서 은근히 고민을 엄청 많이 한 문제이다. 실력의 부족을 여실히 드러내주는 문제... 파이썬 덕을 많이 본 문제라서, C++로도 풀어봐야겠다. 개수를 세어서 어딘가 저장하는 것에 대해서 무언가 방법이 있을 것 같은데... Python xs = [] ys = [] x = -1 y = -1 for i in range(3): a, b = map(int, input().split()) xs.append(a) ys.append(b) for item in xs: if xs.count(item) == 1: x = item for item in ys: if ys.count(item) == 1: y ..
문제 링크: 9020번 골드바흐의 추측 https://www.acmicpc.net/problem/9020 먼저 아리스토텔레스의 체를 통해 소수인지의 여부를 담고있는 배열을 만들어준다. 투 포인터를 사용하여, left와 right가 모두 처음에는 n/2를 가리키도록 한다. left를 1씩 감소시키며 그 때마다 right를 갱신하면서, 두 포인터가 가리키는 숫자가 모두 소수가 맞는가를 확인한다. 즉 합(n)이 정해져 있는 경우는 한 쪽(left)만 생각한다. Java import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; import java.util.StringTokenizer; public cl..
우측 상단의 Perspective에서 Java와 Java EE 중(디버그 모드 등 개발 환경 설정) 선택 가능하다. Java Perspective에서 Java project를 생성 가능하다. 탐색기로 workspace 폴더를 실제로 보면, 프로젝트명의 폴더명이 생성되어 있다. src 폴더 내에 작성한 소스 목록이 있고, bin 폴더 내에 컴파일 결과물이 있고, .settings 폴더 내에 컴파일 옵션 등이 들어가 있다. 이 정보들은 Eclipse Package Explorer의 JRE System Library에 시각화되어 있다. Eclipse Package Explorer에서 src 폴더에 우측 클릭하여 File을 추가한다. + Ctrl + + 또는 Ctrl + -로 확대 및 축소할 수 있다. 탭을 클..
문제 링크: 2581번 소수 https://www.acmicpc.net/problem/2581 아리스토텔레스의 체를 만들 때, 1은 소수가 아니라는 점을 절대 잊지 말자...! arr = [False] * 10001 # False: 소수, True: 합성수 arr[1] = True # 여기! for i in range(2, 10001): if arr[i]: # i가 합성수이면 continue continue for j in range(i*2, 10001, i): arr[j] = True # main m = int(input()) n = int(input()) minn = 10001 summ = 0 flag = False # m, n 사이에 소수가 있는가? for cur in range(m, n+1): i..
문제 링크: 1011번 Fly me to the Alpha Centauri https://www.acmicpc.net/problem/1011 n회 이동으로 최대 거리를 이동할 때 각 경로를 표시하면 다음과 같다. n=1일 때, [1] n=2일 때, [1 1] n=3일 때, [1 2 1] n=4일 때, [1 2 2 1] n=5일 때, [1 2 3 2 1] ... 그러면 다음과 같이 수열의 일반항을 구할 수 있다. 홀수일 때는 1, 4, 9, 16, ... → a_n = n^2 짝수일 때는 2, 6, 12, 20, ... → a_n = n^2 + n → 여기서 쓸데없는 고민을 너무 많이 했다. 짝수일 때까지는 고려할 필요가 없었다! 사용할 수는 있지만, 복잡해진다. 표를 그리거나 순서도를 그려볼 때, 어떤 ..
문제 링크: 2775번 부녀회장이 될테야 https://www.acmicpc.net/problem/2775 그림을 그려보면 풀기 쉬운 문제였다! 아마 재귀적으로도 풀릴 것 같다. def test(floor, hosu): house = [[0] * (hosu+1) for i in range(floor+1)] # 0호와 0층을 만들어준다. # 연산 과정에서 0호는 무시하면 된다. for h in range(hosu+1): house[0][h] = h for f in range(floor+1): house[f][1] = 1 for f in range(1, floor+1): for h in range(2, hosu+1): house[f][h] = house[f][h-1] + house[f-1][h] return..