전체 글 208

백준 - 3053번

택시 기하학 https://www.acmicpc.net/problem/3053 3053번: 택시 기하학 첫째 줄에는 유클리드 기하학에서 반지름이 R인 원의 넓이를, 둘째 줄에는 택시 기하학에서 반지름이 R인 원의 넓이를 출력한다. 정답과의 오차는 0.0001까지 허용한다. www.acmicpc.net 택시 기하학에서의 원과 유클리드 기하학에서의 원의 넓이를 구해야 한다. 각각 원은 다음과 같이 그릴 수 있다. 택시 기하학에서의 원은 우리가 흔히 아는 마름모 모양이다. 그래서 넓이를 구하는 방법도 다르다. 파이를 값을 명시해줄까 하다가 math 모듈을 가져와서 사용했다. 1 2 3 4 5 import math r = int(input()) print(f"{math.pi * r**2:.6f}") print(..

알고리즘 2021.08.11

백준 - 4153번

직각삼각형 https://www.acmicpc.net/problem/4153 4153번: 직각삼각형 입력은 여러개의 테스트케이스로 주어지며 마지막줄에는 0 0 0이 입력된다. 각 테스트케이스는 모두 30,000보다 작은 양의 정수로 주어지며, 각 입력은 변의 길이를 의미한다. www.acmicpc.net 처음엔 예제의 입력값들이 작은 수에서 큰 수 순서대로 입력되길래 피타고라스 정리만 확인하도록 작성했더니 틀렸다고 나와서 가장 큰 수를 고르는 작업을 추가했다. 1 2 3 4 5 6 7 8 9 while True: case = list(map(int, input().split())) if sum(case) == 0: break case.sort() a, b, c = case if c ** 2 == a**2..

알고리즘 2021.08.10

백준 - 3009번

네 번째 점 https://www.acmicpc.net/problem/3009 3009번: 네 번째 점 세 점이 주어졌을 때, 축에 평행한 직사각형을 만들기 위해서 필요한 네 번째 점을 찾는 프로그램을 작성하시오. www.acmicpc.net 문제에서 만들어지는 직사각형이 축에 평행한 직사각형이라고 했으니 만들어지는 직사각형은 다음과 같이 그릴 수 있다. 모든 좌표값을 모아서 본다면 x축은 a가 2번, b가 2번 사용되고 y축은 x가 2번, y가 2번 사용된다. 입력받은 세 좌표들을 보고 한 번만 나온 값들을 적으면 되는 것이다. 코드로는 어떻게 찾아야 할지 고민하다가 list와 set을 사용했다. 1 2 3 4 5 6 7 8 x1, y1 = map(int, input().split()) x2, y2 =..

알고리즘 2021.08.10

백준 - 9020번

골드바흐의 추측 https://www.acmicpc.net/problem/9020 9020번: 골드바흐의 추측 1보다 큰 자연수 중에서 1과 자기 자신을 제외한 약수가 없는 자연수를 소수라고 한다. 예를 들어, 5는 1과 5를 제외한 약수가 없기 때문에 소수이다. 하지만, 6은 6 = 2 × 3 이기 때문에 소수가 아 www.acmicpc.net 에라토스테네스의 체 방법으로 10000까지의 수들 중 소수를 먼저 구하고 시작했다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 max = 10000 numbers = [ True for _ in range(max)] for i in range(2, max): if numbers[i]: for j in range(2*i, max, i): numbe..

알고리즘 2021.08.06

백준 - 4948번 / 에라토스테네스의 체

베르트랑 공준 https://www.acmicpc.net/problem/4948 4948번: 베르트랑 공준 베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다. 이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼 www.acmicpc.net 입력받은 n보다 크고, 2n보다 작거나 같은 수들 중 존재하는 소수의 개수를 출력해야 한다. 작성한 코드(시간: 1168ms) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 max = 123456 def isPrime(num): if num == 1 or num == 0: return False else: for i in range(2,..

알고리즘 2021.08.06

정보처리기사 필기/실기 시험 후기 (2) -공부할 때 유용한 사이트들

시험 준비하면서 자주 방문했던 사이트들을 공유하고싶어서 글을 작성했다. 1. 네이버 수제비 카페 https://cafe.naver.com/soojebi 수제비- IT 커뮤니티 (정보처리기사... : 네이버 카페 수제비-수험생 입장에서 제대로 쓴 비법서(정보처리기사, 정보처리기능사, 빅데이터 분석기사 등 시리즈) cafe.naver.com 이 카페는 수제비 정보처리기자 교재를 만드는 분들이 운영하는 카페다. 수제비 교재를 사용하지 않는 사람도 가입하고 자료를 사용할 수 있다. 어느 교재를 사용하든지 방문하는 것을 추천한다. 보통 수험생 커뮤니티라고 하면 시험을 준비하는 사람들끼리 질문 주고받거나 올라오는 글들이 잡담에 가까워 크게 도움이 되지 않는 정도라고 생각했다. 그런데 여기는 관리자가 있기 때문에 커..

TIL 2021.08.06

백준 - 2581번, 1929번 / 소수

2581번 - 소수 https://www.acmicpc.net/problem/2581 2581번: 소수 M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다. 단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다. www.acmicpc.net 내가 작성한 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 M = int(input()) N = int(input()) num = [i for i in range(M, N+1)] prime = [] if num[0] == 1 : num.remove(1) i = 2 while i*i

알고리즘 2021.08.05

백준 - 1978번 / 소수

소수는 1보다 큰 자연수 중 1과 자기 자신만을 약수로 가지는 수이다. * 1은 소수가 아니다 어떤 수가 소수인지 확인하기 위해서는 n보다 작은 수로 나누어지는지 확인해보면 된다. 2부터 n까지 모두 확인해도 되지만 사실 √ n 까지만 확인하면 된다. 왜냐하면 수가 수를 나누기 위해서는 그 몫이 항상 필요하며, 나누는 수와 몫 중 하나는 반드시 √ n 이하이기 때문이다. √ 108 = 약 10.33이다. 만약 2 ~ √ n 까지 나눠보았는데 나눠지지 않는다면 소수라고 할 수 있다. 1978번 - 소수 찾기 https://www.acmicpc.net/problem/1978 1978번: 소수 찾기 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의..

알고리즘 2021.08.04