AtCoder
-
Atcoder Beginner Contest 266 후기AtCoder 2022. 9. 2. 21:29
A. Middle Letter 길이가 홀수인 문자열이 주어질 때, 중앙에 위치한 문자를 출력하는 문제이다 import sys arr = list(sys.stdin.readline().rstrip()) print(arr[len(arr) // 2]) B. Modulo Number $-10^8 \leq N \leq 10^8 $인 N이 주어질 때, N - x가 998244353의 배수가 되게 하는 $0 \leq x \leq 998244352$를 찾는 문제이다. 브루트포스를 통해 x를 찾게 되면 TLE를 피할 수 없다. 그런데, 998224353의 배수가 된다는 것은, 결국 $(N - x) \ mod \ 998224353$이 0이 된다는 것과 동치이다. 그런데, mod 연산은 뺄샘과 덧셈, 곱셉에 대한 분배법칙이..
-
Atcoder Beginner Contest 265 후기AtCoder 2022. 8. 23. 17:19
A. Apple 단순한 구현 문제이다. 사과를 1개 살 때 X만큼의 비용이 들고 3개 살 때는 Y만큼의 비용이 들 때 전체 N개를 살 때 최소 비용을 묻는 문제이다. X, Y, N 모두 100이하이기 때문에 단순 for문으로 처리 가능하다 import sys x, y, n = map(int, sys.stdin.readline().split()) ans = 9876543210 for i in range(n): if n - 3 * i >= 0: ans = min(ans, y * i + x * (n - 3 * i)) print(ans) B. Explore 역시 단순한 구현 문제이다. 1부터 N번방까지 순차적으로 방문하는데, 방을 이동할 때 마다 시간이 감소된다. 현재 남은 시간이 0이하면 더 이상 움직일 수 ..
-
Atcoder Beginner Contest 253 후기AtCoder 2022. 6. 18. 15:21
A. Median? 세 수 a,b,c가 주어질 때 b가 세 수의 중앙값인지 확인하는 문제 import sys arr = list(map(int, sys.stdin.readline().split())) val = arr[1] res = sorted(arr) print('Yes' if res[1] == val else 'No') B. Distance Between Tokens 2차원 평면에서 두 점 사이의 거리를 묻는 문제. 단, 유클리드 거리가 아닌 택시 거리를 출력해야 한다 import sys n, m = map(int, sys.stdin.readline().split()) arr = [list(sys.stdin.readline().rstrip()) for _ in range(n)] # a, b = 첫 ..
-
Atcoder Beginner Contest 252 후기AtCoder 2022. 5. 29. 16:43
A. ASCII code 특정 숫자(아스키 코드)를 문자로 변환하는 문제이다 import sys n = int(sys.stdin.readline()) print(chr(n)) B. Takahashi's Failure 단순한 구현문제이다. 특정 수열의 최대값들 중에서 특정 인덱스에 속하는 최대값이 있는지만 확인하면 된다 import sys # 입력부 n, k = map(int, sys.stdin.readline().split()) arr = list(map(int, sys.stdin.readline().split())) temp = list(map(int, sys.stdin.readline().split())) # val : 수열의 최대값 val = max(arr) # flag : Takahashi가 싫어..
-
AtCoder Beginner Contest 250 후기AtCoder 2022. 5. 8. 23:23
A. Adjacent Squares 간단한 문제다. 어떤 H * W 사각형(사실상 2차원 배열)이 주어질 때, 특정 좌표 (R, C)와 동서남북으로 인접한 사각형의 갯수를 구하는 문제이다 import sys h,w = map(int, sys.stdin.readline().split()) r,c = map(int, sys.stdin.readline().split()) # 전체 사각형 전처리 arr = [[-1] * w for _ in range(h)] dx = [1, 0, -1, 0] dy = [0, 1, 0, -1] ans = 0 for i in range(h): for j in range(w): # 현재 좌표가 (R, C)이면 if i == r - 1 and j == c - 1: # 4방향 체크 for..
-
AtCoder Beginner Contest 249 후기AtCoder 2022. 5. 1. 16:10
A. Jogging 두 사람 A와 B가 있을 때, A는 a분동안 걷고, c분을 쉰다. B는 d분동안 걷고, f분을 쉰다. 둘다 같은 x시간에 동시에 출발했을 때, 누가 더 멀리 가있는지 확인하는 간단한 수학문제이다. A는 1초에 b만큼 가고, B는 1초에 e만큼 간다. 접근법은 간단하다. 걷고 쉬는 것을 하나의 사이클이라고 할 때, 전체 사이클을 구한다. 이후 남은 시간과 걸을 수 있는 시간을 비교하여 더 작은 쪽만큼 걸으면 전체 거리가 된다 import sys # 입력부 a,b,c,d,e,f,x = map(int, sys.stdin.readline().split()) taka = (a * (x // (a + c)) + min((x % (a + c)), a)) * b aoki = (d * (x // (..
-
Atcoder Beginner Contest 243 후기AtCoder 2022. 3. 13. 23:59
A. Shampoo 샴푸가 n리터있고 세명이서 각각 a,b,c만큼 돌아가면서 쓸 때, 최초로 샴푸를 사용하지 못하는 사람을 묻는 문제이다. n제한이 작기 때문에 단순 구현문제로 충분하다 import sys n, a, b, c = map(int, sys.stdin.readline().split()) arr = [a, b, c] cache = {0 : 'F', 1 : 'M', 2 : "T"} idx = 0 while True: if (n - arr[idx] < 0): print(cache[idx]) break else: n -= arr[idx] idx += 1 idx %= 3 B. Hit and Blow 특정 배열 A와 B가 있을 때, 같은 인덱스에서 같은 값을 가지는 원소의 갯수와 다른 인덱스에서 같은 값..