백준(25)
-
[기본수학1] Fly me to the Alpha Centauri
1011번: Fly me to the Alpha Centauri 우현이는 어린 시절, 지구 외의 다른 행성에서도 인류들이 살아갈 수 있는 미래가 오리라 믿었다. 그리고 그가 지구라는 세상에 발을 내려 놓은 지 23년이 지난 지금, 세계 최연소 ASNA 우주 비행 www.acmicpc.net 이동 거리의 변화는 +1 , 0 , -1 중에서 일어나고 맨 마지막 이동거리는 1이기 때문에, 작동시기별 최대 이동거리에 도달하기 위한 요소들이 생기게 된다. 최대 이동거리가 5라면 1 2 3 4 5 4 3 2 1 의 형태가 기본적으로 존재하게 된다는 뜻. 이 형태의 합을 구하면 n^2 이 된다. 전체 이동거리에서 n^2 로 나올 수 있는 형태를 빼고 나머지를 통해서 잔여 횟수를 더해주면 끝. 잔여 횟수는 0 또는 1..
2021.02.27 -
[기본수학1] 큰 수 A+B
10757번: 큰 수 A+B 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 파이썬에서는 그냥 a+b를 바로 출력해도 정답처리가 되더라;; 어쨌든 의도는 그게 아닌 것 같아서 구현했다. 그냥 A+B 했을 때 72ms 정도 소요됐는데 직접 구현한 건 92ms라... 비슷하게 걸린 것 같은데 최적화하면? 제출 코드 a_input, b_input = list(map(str, input().split(" "))) a = list(a_input) b = list(b_input) len_max = max([len(a), len(b)]) len_min = min([len(a), len(b)]) len_diff = len_max - len_min if len_m..
2021.02.26 -
[기본수학1] 설탕 배달
2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 제출코드 from sys import stdin kg = int(stdin.readline()) def get_container_count(kg: int): total_max = kg // 3 # 나올 수 있는 토탈 최대값 total_min = kg // 5 # 나올 수 있는 토탈 최소값 if kg % 5 == 0: return total_min for i in range(0, total_max + 1): three_rest = (kg - (3 * i)) if three_..
2021.02.24 -
[기본수학1] 부녀회장이 될테야
2775번: 부녀회장이 될테야 첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 정수 k, 두 번째 줄에 정수 n이 주어진다 www.acmicpc.net 제목이 굉장히 귀여운 문제였다. 이렇게 사람이 많이 살고있는 아파트의 부녀회장이 되려면 쉽지 않을 것 같다. 예제를 바탕으로 몇 번 그려보면 규칙성을 쉽게 발견할 수 있었다. 재귀적으로 풀어봤다. 제출코드 from sys import stdin test_count = int(stdin.readline()) test_case = [] for i in range(0, test_count): case_k = int(stdin.readline()) case_n = int(stdin.readline()) tes..
2021.02.24 -
[기본수학1] 달팽이는 올라가고 싶다
2869번: 달팽이는 올라가고 싶다 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000) www.acmicpc.net 1년 전에 공부를 막 시작하려고 할 때, 살짝 배운 자바로 어떻게든 풀어보려고 이렇게 저렇게 시도해보다가 실패한 흔적... 이번엔 일필휘지로 제출해서 끝났는데 참 감개가 무량대수일세. 공부를 본격적으로 시작해보려고 하던 찰나에 건드려본 문제였다. 좀처럼 풀지 못하다 보니 내가 적성이 아닌가 하는 고민도 들었던 것 같다. 대단한 기능이나 지식이 필요한 문제는 아니었는데, 프로그래밍적 혹은 수학적 사고라고 일컫는 부분이 아예 없던 시기여서 정말 힘들었었다. 지금 보면 쉬운 문제인데 그때는 왜 그렇게 힘들었는지.... 그만큼..
2021.02.20 -
[기본수학1] 분수찾기
1193번: 분수찾기 첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다. www.acmicpc.net 분수라는 말에 현혹되지 않고, x / y 형태의 숫자로 인식하면 편하다. 대각선으로 배치된 수의 합은 항상 같으므로 규칙성을 찾으면 된다. 2차월 배열 데이터를 1차원으로 변형해서 다루는 문제는 앞으로도 많이 나올 듯? 제출코드 target = int(input()) sum_x_y = 1 line_max = 0 while True: sum_x_y += 1 if ((target * 2) - (sum_x_y*(sum_x_y-1)))
2021.02.20