diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..4b1eeab --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "files.associations": { + "iostream": "cpp" + } +} diff --git a/201902654/10986.py b/201902654/10986.py deleted file mode 100644 index c7f6ba7..0000000 --- a/201902654/10986.py +++ /dev/null @@ -1,18 +0,0 @@ -N, M = list(map(int, input().split())) -A = list(map(int, input().split())) - -result = 0 -sub_sum = [0 for _ in range(N)] -count = [0 for _ in range(M)] -sub_sum[0] = A[0] % M -for i in range(1, len(A)): - sub_sum[i] = (sub_sum[i - 1] + A[i]) % M - -sub_sum.insert(0, 0) - -# print(sub_sum) -for i in range(len(sub_sum)): - result = result + count[sub_sum[i]] - count[sub_sum[i]] += 1 - -print(result) diff --git a/201902654/1253.py b/201902654/1253.py deleted file mode 100644 index 0a3fbe7..0000000 --- a/201902654/1253.py +++ /dev/null @@ -1,32 +0,0 @@ -N = int(input()) - -lst = list(map(int, input().split())) -lst.sort() -dic = {} -for iter in lst: - if dic.get(iter) == None: - dic[iter] = 1 - else: - dic[iter] = dic[iter] + 1 -result = 0 - -for index in range(len(lst)): - dic[lst[index]] = dic[lst[index]] - 1 - point = 0 - while point < len(lst): - if point != index: - val = lst[index] - lst[point] - if dic.get(val) != None and dic.get(val) > 0: - if val != lst[point]: - result += 1 - break - else: - if dic[val] > 1: - result += 1 - break - point += 1 - else: - point += 1 - dic[lst[index]] = dic[lst[index]] + 1 - -print(result) diff --git a/201902654/1344.py b/201902654/1344.py deleted file mode 100644 index af526a9..0000000 --- a/201902654/1344.py +++ /dev/null @@ -1,43 +0,0 @@ -A = int(input()) -B = int(input()) - -A_percents = [0 for _ in range(20)] -B_percents = [0 for _ in range(20)] - -A_percents[0] = 1 -B_percents[0] = 1 - -for _ in range(18): - temp = [0 for _ in range(20)] - for i in range(19): - temp[i] = temp[i] + A_percents[i] * ((100 - A) / 100) - temp[i + 1] = temp[i + 1] + A_percents[i] * (A / 100) - A_percents = temp - -for _ in range(18): - temp = [0 for _ in range(20)] - for i in range(19): - temp[i] = temp[i] + B_percents[i] * ((100 - B) / 100) - temp[i + 1] = temp[i + 1] + B_percents[i] * (B / 100) - B_percents = temp - -A_get_prime_number = 0 -A_get_prime_number += A_percents[2] -A_get_prime_number += A_percents[3] -A_get_prime_number += A_percents[5] -A_get_prime_number += A_percents[7] -A_get_prime_number += A_percents[11] -A_get_prime_number += A_percents[13] -A_get_prime_number += A_percents[17] - -B_get_prime_number = 0 -B_get_prime_number += B_percents[2] -B_get_prime_number += B_percents[3] -B_get_prime_number += B_percents[5] -B_get_prime_number += B_percents[7] -B_get_prime_number += B_percents[11] -B_get_prime_number += B_percents[13] -B_get_prime_number += B_percents[17] - -print(1 - ((1 - A_get_prime_number) * (1 - B_get_prime_number))) -# print(A_percents, B_percents) diff --git a/201902654/13713.py b/201902654/13713.py deleted file mode 100644 index c81557e..0000000 --- a/201902654/13713.py +++ /dev/null @@ -1,33 +0,0 @@ -import sys - -def get_z_index(S: str): - z_index = [0 for _ in range(len(S))] - left = 0 - right = 0 - for i in range(1, len(S)): - if right < i: - left = right = i - while right < len(S) and S[right] == S[right - left]: - right += 1 - z_index[i] = right - left - right -= 1 - else: - k = i - left - if z_index[k] < right - i + 1: - z_index[i] = z_index[k] - else: - left = i - while right < len(S) and S[right] == S[right - left]: - right += 1 - z_index[i] = right - left - right -= 1 - return z_index - -S = sys.stdin.readline().strip() -M = int(sys.stdin.readline()) -reversed_S = S[::-1] -z_index = get_z_index(reversed_S) -z_index[0] = len(S) -for i in range(M): - i = int(sys.stdin.readline()) - print(z_index[len(S) - i]) diff --git a/201902654/1535.py b/201902654/1535.py deleted file mode 100644 index 800a544..0000000 --- a/201902654/1535.py +++ /dev/null @@ -1,22 +0,0 @@ -N = int(input()) -global loss_hps -loss_hps = list(map(int, input().split())) -global get_hapinesses -get_hapinesses = list(map(int, input().split())) - -result = 0 - -def recursion(hp_left, hapiness, index, N): - global loss_hps, get_hapinesses, result - result = max(result, hapiness) - if index < N: - next_hp = hp_left - loss_hps[index] - # Select - if next_hp > 0: - recursion(next_hp, hapiness + get_hapinesses[index], index + 1, N) - # UnSelect - recursion(hp_left, hapiness, index + 1, N) - -recursion(100, 0, 0, N) - -print(result) diff --git a/201902654/16900.py b/201902654/16900.py deleted file mode 100644 index 76b20e4..0000000 --- a/201902654/16900.py +++ /dev/null @@ -1,35 +0,0 @@ -line = list(input().split()) -S = line[0] -K = int(line[1]) - -def get_z_index(S): - z_index = [0] * len(S) - left = 0 - right = 0 - for i in range(1, len(S)): - if i > right: - left = right = i - while right < len(S) and S[right] == S[right - left]: - right += 1 - z_index[i] = right - left - right -= 1 - else: - k = i - left - if z_index[k] < right - i + 1: - z_index[i] = z_index[k] - else: - left = i - while right < len(S) and S[right] == S[right - left]: - right += 1 - z_index[i] = right - left - right -= 1 - return z_index - -z_index = get_z_index(S) -last_duplicated_value = 0 -for i in range(len(S)): - index = len(S) - i - 1 - if z_index[index] > 0 and z_index[index] == i + 1: - last_duplicated_value = z_index[index] -left_string_length = len(S) - last_duplicated_value -print(left_string_length * K + last_duplicated_value) diff --git a/201902654/17352.py b/201902654/17352.py deleted file mode 100644 index b57bc77..0000000 --- a/201902654/17352.py +++ /dev/null @@ -1,35 +0,0 @@ -import sys - - -N = int(sys.stdin.readline()) -global parents -parents = [i for i in range(N)] - -def get_parent(x): - global parents - if parents[x] == x: - return x - return get_parent(parents[x]) - -def union_parent(a, b): - global parents - a = get_parent(a) - b = get_parent(b) - if a < b: - parents[b] = a - else: - parents[a] = b - -for _ in range(N - 2): - parent, child = list(map(int, sys.stdin.readline().split())) - union_parent(parent - 1, child - 1) - - -compare = get_parent(0) -result = [compare] -for i in range(N): - if compare != get_parent(i): - result.append(get_parent(i)) - break - -print(result[0] + 1, result[1] + 1) diff --git a/201902654/2467.py b/201902654/2467.py deleted file mode 100644 index 264533c..0000000 --- a/201902654/2467.py +++ /dev/null @@ -1,19 +0,0 @@ -N = int(input()) - -lst = list(map(int, input().split())) - -result_value = float('inf') -result = [] -start_point = 0 -compare_point = len(lst) - 1 -while start_point < compare_point: - value = abs(lst[start_point] + lst[compare_point]) - if value < result_value: - result_value = value - result = [lst[start_point], lst[compare_point]] - if compare_point - 1 != start_point and value > abs(lst[start_point] + lst[compare_point - 1]): - compare_point -= 1 - else: - start_point += 1 - -print(result[0], result[1]) diff --git a/201902654/2473.py b/201902654/2473.py deleted file mode 100644 index 85e2b0b..0000000 --- a/201902654/2473.py +++ /dev/null @@ -1,22 +0,0 @@ -N = int(input()) - -lst = list(map(int, input().split())) -lst.sort() - -result_value = float('inf') -result = [] - -for first in range(len(lst) - 2): - start_point = first + 1 - compare_point = len(lst) - 1 - while start_point < compare_point: - value = abs(lst[first] + lst[start_point] + lst[compare_point]) - if value < result_value: - result_value = value - result = [lst[first], lst[start_point], lst[compare_point]] - if compare_point - 1 != start_point and value > abs(lst[first] + lst[start_point] + lst[compare_point - 1]): - compare_point -= 1 - else: - start_point += 1 - -print(result[0], result[1], result[2]) diff --git a/201902654/2629.py b/201902654/2629.py deleted file mode 100644 index 00c8c30..0000000 --- a/201902654/2629.py +++ /dev/null @@ -1,29 +0,0 @@ -import copy - -weight_count = int(input()) -weights = list(map(int, input().split())) - -marble_count = int(input()) -marbles = list(map(int, input().split())) - -can_make_weights = [False for _ in range(80001)] - -for i in range(weight_count): - temp_weight = copy.deepcopy(can_make_weights) - for j in range(80001): - added = j + weights[i] - subed = j - weights[i] - if j == 40000 + weights[i]: - temp_weight[j] = True - if j == 40000 - weights[i]: - temp_weight[j] = True - if added < 80001: - if can_make_weights[added] == True: - temp_weight[j] = True - if subed > 0: - if can_make_weights[subed] == True: - temp_weight[j] = True - can_make_weights = temp_weight - -for marble in marbles: - print('Y' if can_make_weights[marble + 40000] == True else 'N', end=' ') diff --git a/201902654/2812.py b/201902654/2812.py deleted file mode 100644 index 51997f8..0000000 --- a/201902654/2812.py +++ /dev/null @@ -1,19 +0,0 @@ -from collections import deque - -K, N = list(map(int, input().split())) -num_str = input() -queue = deque() - -queue.append(int(num_str[0])) -for i in range(1, K): - val = int(num_str[i]) - while len(queue) > 0 and queue[len(queue) - 1] < val and N > 0: - queue.pop() - N -= 1 - queue.append(val) - -for _ in range(N): - queue.pop() - -for i in range(len(queue)): - print(queue[i], end='') diff --git a/201902654/4803.py b/201902654/4803.py deleted file mode 100644 index cf1193e..0000000 --- a/201902654/4803.py +++ /dev/null @@ -1,36 +0,0 @@ -import sys - -def get_parent(x): - global parents - if parents[x] == x: - return x - return get_parent(parents[x]) - -def union_parent(a, b): - global parents, count - a = get_parent(a) - b = get_parent(b) - if a < b: - parents[b] = a - count[a] += count[b] - else: - parents[a] = b - count[b] += count[a] - -global parents, count -case = 0 -while True: - case += 1 - N, M = list(map(int, sys.stdin.readline().split())) - if N == 0 and M == 0: - break - parents = [i for i in range(N)] - count = [1 for _ in range(N)] - for _ in range(M): - parent, child = list(map(int, sys.stdin.readline().split())) - union_parent(parent - 1, child - 1) - for i in range(N): - count[get_parent(i)] -= 1 - count = (count.count(0)) - print("Case " + str(case) + ": ", end="") - print("No trees." if count == 0 else "There is one tree." if count == 1 else "A forest of " + str(count) + " trees.") diff --git a/201902654/7511.py b/201902654/7511.py deleted file mode 100644 index aaabe65..0000000 --- a/201902654/7511.py +++ /dev/null @@ -1,32 +0,0 @@ -import sys - -T = int(sys.stdin.readline()) -global parents -def get_parent(x): - global parents - if parents[x] == x: - return x - return get_parent(parents[x]) - -def union_parent(a, b): - global parents - a = get_parent(a) - b = get_parent(b) - if a < b: - parents[b] = a - else: - parents[a] = b -for i in range(T): - N = int(sys.stdin.readline()) - K = int(sys.stdin.readline()) - parents = [i for i in range(N)] - for _ in range(K): - parent, child = list(map(int, sys.stdin.readline().split())) - union_parent(parent - 1, child - 1) - - M = int(sys.stdin.readline()) - sys.stdout.write("Scenario " + str(i + 1) + ":\n") - for _ in range(M): - parent, child = list(map(int, sys.stdin.readline().split())) - sys.stdout.write(str(1 if get_parent(parent - 1) == get_parent(child - 1) else 0) + "\n") - sys.stdout.write("\n") diff --git a/201902654/7576.py b/201902654/7576.py deleted file mode 100644 index 0174a7e..0000000 --- a/201902654/7576.py +++ /dev/null @@ -1,36 +0,0 @@ -from collections import deque -import sys - -dx = [1, -1, 0, 0] -dy = [0, 0, 1, -1] - -M, N = list(map(int, sys.stdin.readline().split())) -board = [] -queue = deque() # [x, y, day] -result = 0 - -for row in range(N): - lst = list(map(int, sys.stdin.readline().split())) - for col in range(M): - if lst[col] == 1: - queue.append([col, row, 0]) - board.append(lst) - -while len(queue) > 0: - x, y, day = queue.popleft() - result = day - for i in range(4): - next_x = x + dx[i] - next_y = y + dy[i] - if 0 <= next_x and next_x < M and 0 <= next_y and next_y < N and board[next_y][next_x] == 0: - board[next_y][next_x] = 1 - queue.append([next_x, next_y, day + 1]) - -is_all_rotten = True - -for row in range(N): - for col in range(M): - if board[row][col] == 0: - is_all_rotten = False - -print(-1 if is_all_rotten == False else result) diff --git a/201902662/1339.py b/201902662/1339.py deleted file mode 100644 index f1c5eea..0000000 --- a/201902662/1339.py +++ /dev/null @@ -1,31 +0,0 @@ -def main(): - n = int(input()) - words = [input() for _ in range(n)] - - alphabet_value = {} - for word in words: - for i in range(len(word)): - alphabet_value[word[i]] = 0 - - for word in words: - for i in range(len(word)): - idx = len(word)-i-1 - alphabet_value[word[i]] += 10**idx - - sorted_alphabet_value = list(alphabet_value.keys()) - sorted_alphabet_value.sort(key=lambda x: alphabet_value[x]) - sorted_alphabet_value = ['_']*(10-len(sorted_alphabet_value)) + sorted_alphabet_value - - alphabet_to_num = {} - for i in range(len(sorted_alphabet_value)): - alphabet_to_num[sorted_alphabet_value[i]] = i - - num = 0 - for word in words: - for i in range(len(word)): - idx = len(word)-i-1 - num += alphabet_to_num[word[i]]*(10**idx) - print(num) - -if __name__ == "__main__": - main() \ No newline at end of file diff --git a/201902662/14890.py b/201902662/14890.py deleted file mode 100644 index 96b7f8e..0000000 --- a/201902662/14890.py +++ /dev/null @@ -1,38 +0,0 @@ -def main(): - n, l = map(int, input().split()) - zido = [list(map(int, input().split())) for _ in range(n)] - cnt = 0 - - def canPass(road): - ramp = [False for i in range(n)] - for i in range(1, n): - if road[i] == road[i-1]: - continue - elif road[i] - road[i-1] == 1: - if i-l < 0: - return 0 - for j in range(i-l, i): - if ramp[j]: - return 0 - ramp[j] = True - elif road[i] - road[i-1] == -1: - if i+l > n: - return 0 - for j in range(i, i+l): - if ramp[j]: - return 0 - ramp[j] = True - else: - return 0 - return 1 - - for i in range(n): - road1 = zido[i] - road2 = [zido[j][i] for j in range(n)] - cnt += canPass(road1) - cnt += canPass(road2) - - print(cnt) - -if __name__ == "__main__": - main() \ No newline at end of file diff --git a/201902662/18235.py b/201902662/18235.py deleted file mode 100644 index 88a5177..0000000 --- a/201902662/18235.py +++ /dev/null @@ -1,41 +0,0 @@ -def main(): - n, a, b = map(int, input().split()) - day, meet = 0, False - land = [True for i in range(n+1)] - coor = [a, b] - - while coor: - newCoor = [] - for i in coor: - iCoor = i + 2**day - if iCoor <= n: - if land[iCoor]: - land[iCoor] = False - newCoor.append(iCoor) - else: - meet = True - break - iCoor = i - 2**day - if iCoor > 0: - if land[iCoor]: - land[iCoor] = False - newCoor.append(iCoor) - else: - meet = True - break - - day += 1 - coor = newCoor - if meet: - break - - for i in coor: - land[i] = True - - if meet: - print(day) - else: - print(-1) - -if __name__ == "__main__": - main() \ No newline at end of file diff --git a/201902662/18311.py b/201902662/18311.py deleted file mode 100644 index 3c6c0b3..0000000 --- a/201902662/18311.py +++ /dev/null @@ -1,24 +0,0 @@ -import sys -input = sys.stdin.readline - -def main(): - n, k = map(int, input().split()) - nums = list(map(int, input().split())) - - num = 0 - for i in range(n): - k -= nums[i] - if k < 0: - num = i - break - - if k >= 0: - for i in range(n-1, -1, -1): - k -= nums[i] - if k < 0: - num = i - break - print(num+1) - -if __name__ == "__main__": - main() \ No newline at end of file diff --git a/201902662/2294.py b/201902662/2294.py deleted file mode 100644 index e92ef55..0000000 --- a/201902662/2294.py +++ /dev/null @@ -1,27 +0,0 @@ -import sys -input = sys.stdin.readline - -def main(): - n, k = map(int, input().split()) - coins = [int(input()) for _ in range(n)] - - dp = [0 for _ in range(k+1)] - for coin in coins: - if coin > k: - continue - dp[coin] = 1 - for i in range(coin+1, k+1): - if dp[i-coin] == 0: - continue - if dp[i]: - dp[i] = min(dp[i], dp[i-coin]+1) - else: - dp[i] = dp[i-coin]+1 - - if dp[k]: - print(dp[k]) - else: - print(-1) - -if __name__ == "__main__": - main() \ No newline at end of file diff --git a/201902662/2447.py b/201902662/2447.py deleted file mode 100644 index d272327..0000000 --- a/201902662/2447.py +++ /dev/null @@ -1,23 +0,0 @@ -def main(): - n = int(input()) - stars = [[' ' for _ in range(n)] for _ in range(n)] - - def fun(x, y, n): - if n == 1: - stars[x][y] = '*' - else: - nn = int(n/3) - for i in range(3): - for j in range(3): - if i == 1 and j == 1: - continue - fun(x+i*nn, y+j*nn, nn) - - fun(0, 0, n) - for i in range(n): - for j in range(n): - print(stars[i][j], end="") - print() - -if __name__ == "__main__": - main() \ No newline at end of file diff --git a/201902662/2476.py b/201902662/2476.py deleted file mode 100644 index d0c0cdf..0000000 --- a/201902662/2476.py +++ /dev/null @@ -1,22 +0,0 @@ -import sys -input = sys.stdin.readline - -def main(): - n = int(input()) - money = [] - for _ in range(n): - a, b, c = map(int, input().split()) - if a == b and b == c: - money.append(10000 + a * 1000) - elif a != b and b != c and c != a: - money.append(max(a, b, c) * 100) - elif a == b: - money.append(1000 + a * 100) - elif b == c: - money.append(1000 + b * 100) - elif c == a: - money.append(1000 + c * 100) - print(max(money)) - -if __name__ == "__main__": - main() \ No newline at end of file diff --git a/201902662/2504.py b/201902662/2504.py deleted file mode 100644 index 3fd36cb..0000000 --- a/201902662/2504.py +++ /dev/null @@ -1,19 +0,0 @@ -import sys -input = sys.stdin.readline - -def main(): - t = int(input()) - for _ in range(t): - n = int(input()) - coins = list(map(int, input().split())) - m = int(input()) - - dp = [0 for _ in range(m+1)] - dp[0] = 1 - for coin in coins: - for i in range(coin, m+1): - dp[i] += dp[i-coin] - print(dp[m]) - -if __name__ == "__main__": - main() \ No newline at end of file diff --git a/201902662/2623.py b/201902662/2623.py deleted file mode 100644 index 33dc333..0000000 --- a/201902662/2623.py +++ /dev/null @@ -1,40 +0,0 @@ -from collections import deque -import sys -input = sys.stdin.readline - -def main(): - n, m = map(int, input().split()) - singer = [set() for _ in range(n+1)] - coef = [0 for _ in range(n+1)] - for _ in range(m): - seq = list(map(int, input().split())) - for i in range(1, seq[0]): - if seq[i+1] in singer[seq[i]]: - continue - singer[seq[i]].add(seq[i+1]) - coef[seq[i+1]] += 1 - - que = deque() - for i in range(1, n+1): - if coef[i]: - continue - que.append(i) - - seq = [] - while que: - e = que.popleft() - seq.append(e) - for child in singer[e]: - coef[child] -= 1 - if coef[child]: - continue - que.append(child) - - if len(seq) == n: - for i in seq: - print(i) - else: - print(0) - -if __name__ == "__main__": - main() \ No newline at end of file diff --git a/201902662/3190.py b/201902662/3190.py deleted file mode 100644 index fff34d8..0000000 --- a/201902662/3190.py +++ /dev/null @@ -1,56 +0,0 @@ -from collections import deque -import sys -input = sys.stdin.readline - -dx = [0, 1, 0, -1] -dy = [1, 0, -1, 0] - -def main(): - n, k = int(input()), int(input()) - # 0: empty, 1: apple, 2: snake - board = [[0 for _ in range(n)] for _ in range(n)] - for _ in range(k): - x, y = map(int, input().split()) - board[x-1][y-1] = 1 - - l = int(input()) - move = [] - for _ in range(l): - x, c = input().split() - move.append((int(x), c)) - - snake = deque([(0, 0)]) - x, y, d, i, second = 0, 0, 0, 0, 0 - while True: - # 뱀 머리 방향 조정 - if i < l: - s, c = move[i] - if second == s: - if c == 'L': - d = (d-1)%4 - elif c == 'D': - d = (d+1)%4 - i += 1 - - # 뱀 머리 이동 - x, y = x + dx[d], y + dy[d] - snake.append((x, y)) - second += 1 - - # 뱀 머리 위치에 따른 - if 0 <= x < n and 0 <= y < n: - if board[x][y] == 0: - board[x][y] = 2 - tx, ty = snake.popleft() - board[tx][ty] = 0 - elif board[x][y] == 1: - board[x][y] = 2 - else: - break - else: - break - - print(second) - -if __name__ == "__main__": - main() \ No newline at end of file diff --git a/201902662/6087.py b/201902662/6087.py deleted file mode 100644 index 824dfde..0000000 --- a/201902662/6087.py +++ /dev/null @@ -1,44 +0,0 @@ -from collections import deque -Inf = float('inf') - -dx = [1, 0, -1, 0] -dy = [0, 1, 0, -1] - -def main(): - w, h = map(int, input().split()) - board = [input() for _ in range(h)] - - c = [] - for i in range(h): - for j in range(w): - if board[i][j] == 'C': - c.append((i, j)) - - que = deque() - mirror = [[[Inf for _ in range(4)] for _ in range(w)] for _ in range(h)] - - x, y = c[0] - for d in range(4): - que.append((x, y, d)) - mirror[x][y][d] = 0 - - while que: - x, y, d = que.popleft() - for i in range(3): - nd = (d+i-1)%4 - nx, ny = x + dx[nd], y + dy[nd] - if 0 <= nx < h and 0 <= ny < w and board[nx][ny] != '*': - cnt = mirror[x][y][d] - - if i != 1: - cnt += 1 - - if mirror[nx][ny][nd] > cnt: - que.append((nx, ny, nd)) - mirror[nx][ny][nd] = cnt - - x, y = c[1] - print(min(mirror[x][y])) - -if __name__ == "__main__": - main() \ No newline at end of file diff --git a/201902662/9466.py b/201902662/9466.py deleted file mode 100644 index 12b03a0..0000000 --- a/201902662/9466.py +++ /dev/null @@ -1,36 +0,0 @@ -import sys -input = sys.stdin.readline - -def main(): - for _ in range(int(input())): - n = int(input()) - hasTeam = [0 for _ in range(n+1)] - visit = [False for _ in range(n+1)] - choice = [0] + list(map(int, input().split())) - - for i in range(1, n+1): - if visit[i]: - continue - - crnt = i - while visit[crnt] == False: - visit[crnt] = True - crnt = choice[crnt] - - while hasTeam[crnt] == 0: - hasTeam[crnt] = 1 - crnt = choice[crnt] - - crnt = i - while hasTeam[crnt] == 0: - hasTeam[crnt] = 2 - crnt = choice[crnt] - - cnt = n - for i in range(1, n+1): - if hasTeam[i] == 1: - cnt -= 1 - print(cnt) - -if __name__ == "__main__": - main() \ No newline at end of file diff --git a/201902662/9663.py b/201902662/9663.py deleted file mode 100644 index dade782..0000000 --- a/201902662/9663.py +++ /dev/null @@ -1,33 +0,0 @@ -from collections import deque - -def main(): - n = int(input()) - que = deque() - - def program(): - length = len(que) - if length == n: - return 1 - - line = [False for _ in range(n)] - for i, v in enumerate(que): - line[v] = True - if v + length - i < n: - line[v + length - i] = True - if v - length + i >= 0: - line[v - length + i] = True - - cnt = 0 - for i in range(n): - if line[i]: - continue - que.append(i) - cnt += program() - que.pop() - return cnt - - print(program()) - - -if __name__ == "__main__": - main() \ No newline at end of file diff --git "a/201902689/10844\353\262\210 - \354\211\254\354\232\264 \352\263\204\353\213\250 \354\210\230.py" "b/201902689/10844\353\262\210 - \354\211\254\354\232\264 \352\263\204\353\213\250 \354\210\230.py" deleted file mode 100644 index cec4c50..0000000 --- "a/201902689/10844\353\262\210 - \354\211\254\354\232\264 \352\263\204\353\213\250 \354\210\230.py" +++ /dev/null @@ -1,18 +0,0 @@ -n = int(input()) - -d = [[0] * 10 for _ in range(n + 1)] -MOD = 1000000000 - -for i in range(1, 10): - d[1][i] = 1 - -for i in range(2, n+1): - for j in range(10): - if j == 0: - d[i][j] = d[i-1][1] - elif j == 9: - d[i][j] = d[i-1][8] - else: - d[i][j] = d[i-1][j-1] + d[i-1][j+1] - -print(sum(d[n]) % MOD) diff --git "a/201902689/10845\353\262\210 - \355\201\220.swift" "b/201902689/10845\353\262\210 - \355\201\220.swift" deleted file mode 100644 index 7036b52..0000000 --- "a/201902689/10845\353\262\210 - \355\201\220.swift" +++ /dev/null @@ -1,61 +0,0 @@ -import Foundation - -var n = Int(readLine()!)! -var queue: [Int] = [] -for _ in 0.. distance[cur] + cost: - distance[next_node] = distance[cur] + cost - if i == n-1: return True - return False - - -for _ in range(m): - a, b, c = map(int, input().split()) - edges.append((a, b, c)) - -negative_cycle = bf(1) -if negative_cycle: - print(-1) -else: - for i in range(2, n+1): - print(distance[i]) if distance[i] != INF else print(-1) - \ No newline at end of file diff --git "a/201902689/1167\353\262\210 - \355\212\270\353\246\254\354\235\230 \354\247\200\353\246\204.py" "b/201902689/1167\353\262\210 - \355\212\270\353\246\254\354\235\230 \354\247\200\353\246\204.py" deleted file mode 100644 index e07b8dd..0000000 --- "a/201902689/1167\353\262\210 - \355\212\270\353\246\254\354\235\230 \354\247\200\353\246\204.py" +++ /dev/null @@ -1,35 +0,0 @@ -import sys - -input = sys.stdin.readline - -v = int(input()) -graph = [[] for _ in range(v + 1)] -for _ in range(v): - arr = list(map(int, input().split())) - vertex1 = arr[0] - vertex2 = arr[1] - index = 1 - while vertex2 != -1: - cost = arr[index+1] - graph[vertex1].append((vertex2, cost)) - index += 2 - vertex2 = arr[index] - -def dfs(x): - stack = [x] - visited = [False] * (v + 1) - costs = [0] * (v+1) - while stack: - node = stack.pop() - visited[node] = True - graph[node].sort(key= lambda x : x[1], reverse= True) - for (n, c) in graph[node]: - if not visited[n]: - costs[n] = costs[node] + c - stack.append(n) - return costs.index(max(costs)), max(costs) - -n, c = dfs(1) -_, result = dfs(n) - -print(result) \ No newline at end of file diff --git "a/201902689/1238\353\262\210 - \355\214\214\355\213\260.py" "b/201902689/1238\353\262\210 - \355\214\214\355\213\260.py" deleted file mode 100644 index 039e3aa..0000000 --- "a/201902689/1238\353\262\210 - \355\214\214\355\213\260.py" +++ /dev/null @@ -1,37 +0,0 @@ -from collections import deque -import heapq -import sys -input = sys.stdin.readline -INF = float('inf') -n, m, x = map(int, input().split()) - -graph = [[] for _ in range(n + 1)] - -for _ in range(m): - start, end, cost = map(int, input().split()) - graph[start].append((end, cost)) - - -def dijkstra(s, e): - dist = [INF] * (n + 1) - dist[s] = 0 - queue = [] - heapq.heappush(queue, (dist[s], s)) - - while queue: - current_dist, current_node = heapq.heappop(queue) - if dist[current_node] < current_dist: - continue - - for (next_node, cost) in graph[current_node]: - distance = cost + dist[current_node] - if dist[next_node] > distance: - dist[next_node] = distance - heapq.heappush(queue, (distance, next_node)) - return dist[e] - -result = 0 -for i in range(1, n +1): - result = max(result, (dijkstra(i, x) + dijkstra(x, i))) - -print(result) diff --git "a/201902689/12865\353\262\210 - \355\217\211\353\262\224\355\225\234 \353\260\260\353\202\255.py" "b/201902689/12865\353\262\210 - \355\217\211\353\262\224\355\225\234 \353\260\260\353\202\255.py" deleted file mode 100644 index a6e77f7..0000000 --- "a/201902689/12865\353\262\210 - \355\217\211\353\262\224\355\225\234 \353\260\260\353\202\255.py" +++ /dev/null @@ -1,20 +0,0 @@ -import sys -input = sys.stdin.readline -arr = [[0, 0]] -n, k = map(int, input().split()) -d = [[0 for _ in range(k + 1)] for _ in range(n + 1)] - -for _ in range(n): - w, v = map(int, input().split()) - arr.append((w, v)) - -for i in range(1, n + 1): - for j in range(1, k + 1): - weight, value = arr[i][0], arr[i][1] - if j < weight: - d[i][j] = d[i-1][j] - else: - d[i][j] = max(d[i-1][j], d[i-1][j-weight] + value) - -result = d[n][k] -print(result) \ No newline at end of file diff --git "a/201902689/13549\353\262\210 - \354\210\250\353\260\224\352\274\255\354\247\210 3.py" "b/201902689/13549\353\262\210 - \354\210\250\353\260\224\352\274\255\354\247\210 3.py" deleted file mode 100644 index 175913b..0000000 --- "a/201902689/13549\353\262\210 - \354\210\250\353\260\224\352\274\255\354\247\210 3.py" +++ /dev/null @@ -1,28 +0,0 @@ -import heapq - -n, k = map(int, input().split()) -INF = float('inf') -arr = [INF] * 100001 -arr[n] = 0 - -def dijkstra(n): - queue = [] - heapq.heappush(queue, (0, n)) - while queue: - cost, now = heapq.heappop(queue) - if now > 0: - if arr[now-1] > cost + 1: - arr[now-1] = cost + 1 - heapq.heappush(queue, (arr[now-1], now-1)) - if now < 100000: - if arr[now+1] > cost + 1: - arr[now+1] = cost + 1 - heapq.heappush(queue, (arr[now+1], now+1)) - if 2 * now <= 100000: - if arr[2 * now] > cost: - arr[2 * now] = cost - heapq.heappush(queue, (arr[2 * now], 2 * now)) - return arr[k] - -result = dijkstra(n) -print(result) \ No newline at end of file diff --git "a/201902689/1504\353\262\210 - \355\212\271\354\240\225\355\225\234 \354\265\234\353\213\250 \352\262\275\353\241\234.py" "b/201902689/1504\353\262\210 - \355\212\271\354\240\225\355\225\234 \354\265\234\353\213\250 \352\262\275\353\241\234.py" deleted file mode 100644 index 27e28d2..0000000 --- "a/201902689/1504\353\262\210 - \355\212\271\354\240\225\355\225\234 \354\265\234\353\213\250 \352\262\275\353\241\234.py" +++ /dev/null @@ -1,39 +0,0 @@ -import heapq -import sys -import copy -input = sys.stdin.readline -INF = float("inf") -n, e = map(int, input().split()) - -graph = [[] for _ in range(n+1)] -distance = [INF for _ in range(n+1)] - -for _ in range(e): - a, b, c = map(int, input().split()) - graph[a].append((b, c)) - graph[b].append((a, c)) - -v1, v2 = map(int, input().split()) - -def dijkstra(s, e): - copiedDistance = copy.deepcopy(distance) - queue = [] - heapq.heappush(queue, (0, s)) - copiedDistance[s] = 0 - while queue: - cost, now = heapq.heappop(queue) - for (node, weight) in graph[now]: - tmp = weight + cost - if copiedDistance[node] > tmp: - copiedDistance[node] = tmp - if node == e: - continue - heapq.heappush(queue, (tmp, node)) - return copiedDistance[e] - -result1 = dijkstra(1, v1) + dijkstra(v1, v2) + dijkstra(v2, n) -result2 = dijkstra(1, v2) + dijkstra(v2, v1) + dijkstra(v1, n) -result = min(result1, result2) -if result == INF: - print(-1) -else: print(result) \ No newline at end of file diff --git "a/201902689/1620\353\262\210 - \353\202\230\353\212\224\354\225\274 \355\217\254\354\274\223\353\252\254 \353\247\210\354\212\244\355\204\260 \354\235\264\353\213\244\354\206\234.py" "b/201902689/1620\353\262\210 - \353\202\230\353\212\224\354\225\274 \355\217\254\354\274\223\353\252\254 \353\247\210\354\212\244\355\204\260 \354\235\264\353\213\244\354\206\234.py" deleted file mode 100644 index 8cb32f2..0000000 --- "a/201902689/1620\353\262\210 - \353\202\230\353\212\224\354\225\274 \355\217\254\354\274\223\353\252\254 \353\247\210\354\212\244\355\204\260 \354\235\264\353\213\244\354\206\234.py" +++ /dev/null @@ -1,19 +0,0 @@ -import sys -input = sys.stdin.readline - -n, m = map(int, input().split()) -name = {} -num = {} - -for i in range(n): - pokemon = input().strip() - name[pokemon] = i + 1 - num[i + 1] = pokemon - -for _ in range(m): - value = input().strip() - if str.isdigit(value): - value = int(value) - print(num[value]) - else: - print(name[value]) \ No newline at end of file diff --git "a/201902689/1629\353\262\210 - \352\263\261\354\205\210.py" "b/201902689/1629\353\262\210 - \352\263\261\354\205\210.py" deleted file mode 100644 index d2916f4..0000000 --- "a/201902689/1629\353\262\210 - \352\263\261\354\205\210.py" +++ /dev/null @@ -1,17 +0,0 @@ -import sys -input = sys.stdin.readline - -a, b, mod = map(int, input().split()) - -def fast_pow(a, n): - if n == 1: - return a % mod - else: - x = fast_pow(a, n//2) - if n % 2 == 0: - return (x * x) % mod - else: - return (x * x * a) % mod -result = fast_pow(a, b) - -print(result) diff --git "a/201902689/1717\353\262\210 - \354\247\221\355\225\251\354\235\230 \355\221\234\355\230\204.py" "b/201902689/1717\353\262\210 - \354\247\221\355\225\251\354\235\230 \355\221\234\355\230\204.py" deleted file mode 100644 index f115b07..0000000 --- "a/201902689/1717\353\262\210 - \354\247\221\355\225\251\354\235\230 \355\221\234\355\230\204.py" +++ /dev/null @@ -1,32 +0,0 @@ -import sys -input = sys.stdin.readline -sys.setrecursionlimit(1000000) - -n, m = map(int, input().split()) - -parent = [x for x in range(n + 1)] - -def chech_union_set(a, b): - a = find(a) - b = find(b) - print("yes") if a == b else print("no") - -def find(x): - if parent[x] != x: - parent[x] = find(parent[x]) - return parent[x] - -def union(a, b): - a = find(a) - b = find(b) - if a < b: - parent[b] = a - else: - parent[a] = b - -for _ in range(m): - op, a, b = map(int, input().split()) - if op: # find - chech_union_set(a, b) - else: # union - union(a, b) diff --git "a/201902689/1865\353\262\210 - \354\233\234\355\231\200.py" "b/201902689/1865\353\262\210 - \354\233\234\355\231\200.py" deleted file mode 100644 index 4b5f09f..0000000 --- "a/201902689/1865\353\262\210 - \354\233\234\355\231\200.py" +++ /dev/null @@ -1,36 +0,0 @@ -import sys -input = sys.stdin.readline -INF = 2000000000 - -tc = int(input()) - -def bellmanFord(s): - distance[s] = 0 - for i in range(n): - for j in range(2 * m + w): - cur = edges[j][0] - next_node = edges[j][1] - cost = edges[j][2] - if distance[next_node] > distance[cur] + cost: - distance[next_node] = distance[cur] + cost - if i == n - 1: - return True - return False - -for _ in range(tc): - n, m, w = map(int, input().split()) - edges = [] - distance = [INF for _ in range(n+1)] - for _ in range(m): # 도로 - s, e, t = map(int, input().split()) - edges.append((s, e, t)) - edges.append((e, s, t)) - for _ in range(w): # 웜홀 - s, e, t = map(int, input().split()) - edges.append((s, e, - t)) - negative_cycle = bellmanFord(1) - - if negative_cycle: - print("YES") - else: - print("NO") \ No newline at end of file diff --git "a/201902689/1976\353\262\210 - \354\227\254\355\226\211 \352\260\200\354\236\220.py" "b/201902689/1976\353\262\210 - \354\227\254\355\226\211 \352\260\200\354\236\220.py" deleted file mode 100644 index 6501365..0000000 --- "a/201902689/1976\353\262\210 - \354\227\254\355\226\211 \352\260\200\354\236\220.py" +++ /dev/null @@ -1,39 +0,0 @@ -import sys -input = sys.stdin.readline -sys.setrecursionlimit(1000000) - -n = int(input()) -m = int(input()) - -parent = [x for x in range(n + 1)] - -def find(x): - if parent[x] != x: - parent[x] = find(parent[x]) - return parent[x] - -def union(a, b): - a = find(a) - b = find(b) - - if parent[a] < parent[b]: - parent[b] = a - else: - parent[a] = b - -for i in range(n): - tmp = list(map(int, input().split())) - - for j in range(n): - if tmp[j]: - union(i + 1, j + 1) - -path = list(map(int, input().split())) -prev = path[0] - -for i in range(1, m): - if find(prev) != find(path[i]): - print("NO") - exit(0) - prev = path[i] -print("YES") diff --git "a/201902689/1987\353\262\210 - \354\225\214\355\214\214\353\262\263.py" "b/201902689/1987\353\262\210 - \354\225\214\355\214\214\353\262\263.py" deleted file mode 100644 index 081d5a7..0000000 --- "a/201902689/1987\353\262\210 - \354\225\214\355\214\214\353\262\263.py" +++ /dev/null @@ -1,38 +0,0 @@ -import sys -input = sys.stdin.readline - -r, c = map(int, input().split()) - -board = [] -visited = [[False] * c for _ in range(r)] - -dy = [-1, 1, 0, 0] -dx = [0, 0, -1, 1] - -for _ in range(r): - tmp = input() - board.append(tmp) - - -def check(y, x): - return 0 <= y < r and 0 <= x < c and not visited[y][x] - -def dfs(y, x, count): - global max_count - max_count = max(max_count, count) - visited[y][x] = True - asc = ord(board[y][x]) - 65 - alpha[asc] = True - for i in range(4): - ny, nx = y + dy[i], x + dx[i] - if check(ny, nx) and board[ny][nx]: - asc = ord(board[ny][nx]) - 65 - if not alpha[asc]: - dfs(ny, nx, count + 1) - visited[ny][nx] = False - alpha[asc] = False - -max_count = 1 -alpha = [False] * 26 -dfs(0, 0, 1) -print(max_count) \ No newline at end of file diff --git "a/201902689/20040\353\262\210 - \354\202\254\354\235\264\355\201\264 \352\262\214\354\236\204.py" "b/201902689/20040\353\262\210 - \354\202\254\354\235\264\355\201\264 \352\262\214\354\236\204.py" deleted file mode 100644 index 145220e..0000000 --- "a/201902689/20040\353\262\210 - \354\202\254\354\235\264\355\201\264 \352\262\214\354\236\204.py" +++ /dev/null @@ -1,36 +0,0 @@ -import sys -sys.setrecursionlimit(1000000) -input = sys.stdin.readline - -n, m = map(int, input().split()) - -parent = [x for x in range(n)] -size = [1] * n - -def find(x): - if parent[x] != x: - parent[x] = find(parent[x]) - return parent[x] - -def union(a, b): - a = find(a) - b = find(b) - - if a != b: - if parent[a] > b: - parent[a] = b - size[b] = size[parent[a]] - else: - parent[b] = a - size[a] = size[parent[b]] - else: # 최상위 노드가 같아서 사이클 발생함 - return True - return False - - -for i in range(m): - a, b = map(int, input().split()) - if union(a, b): - print(i + 1) - exit(0) -print(0) diff --git "a/201902689/2156\353\262\210 - \355\217\254\353\217\204\354\243\274 \354\213\234\354\213\235.py" "b/201902689/2156\353\262\210 - \355\217\254\353\217\204\354\243\274 \354\213\234\354\213\235.py" deleted file mode 100644 index 9104ba6..0000000 --- "a/201902689/2156\353\262\210 - \355\217\254\353\217\204\354\243\274 \354\213\234\354\213\235.py" +++ /dev/null @@ -1,23 +0,0 @@ -import sys -input = sys.stdin.readline -n = int(input()) -arr = [0] * 10000 -for i in range(n): - arr[i] = int(input()) - -mem = [0] * 10000 -mem[0] = arr[0] -mem[1] = arr[1] + arr[0] -mem[2] = max(mem[0] + arr[2], arr[1] + arr[2], mem[1]) -for i in range(3, n): - mem[i] = max(mem[i - 2] + arr[i], mem[i - 3] + arr[i - 1] + arr[i], mem[i - 1]) -print(max(mem)) -""" -6 -6 -10 -13 -9 -8 -1 -""" \ No newline at end of file diff --git "a/201902689/4195\353\262\210 - \354\271\234\352\265\254 \353\204\244\355\212\270\354\233\214\355\201\254.py" "b/201902689/4195\353\262\210 - \354\271\234\352\265\254 \353\204\244\355\212\270\354\233\214\355\201\254.py" deleted file mode 100644 index ca2df65..0000000 --- "a/201902689/4195\353\262\210 - \354\271\234\352\265\254 \353\204\244\355\212\270\354\233\214\355\201\254.py" +++ /dev/null @@ -1,40 +0,0 @@ -import sys -input = sys.stdin.readline -sys.setrecursionlimit(1000000) - -t = int(input()) - -def find(x): - if parent[x] != x: - parent[x] = find(parent[x]) - return parent[x] - -def union(a, b): - a = find(a) - b = find(b) - if a != b: - if parent[a] < b: - parent[b] = a - size[a] += size[b] - else: - parent[a] = b - size[b] += size[a] - print(size[parent[a]]) - else: - print(size[parent[a]]) - -for _ in range(t): - f = int(input()) - f_set = set() - parent = [x for x in range(f * 2)] - size = [1 for _ in range(f * 2)] - dictionary = dict() - for _ in range(f): - a, b = map(str, input().split()) - if a not in f_set: - dictionary[a] = len(f_set) - f_set.add(a) - if b not in f_set: - dictionary[b] = len(f_set) - f_set.add(b) - union(dictionary[a], dictionary[b]) diff --git a/201902715/boj1000.rs b/201902715/boj1000.rs deleted file mode 100644 index d503f72..0000000 --- a/201902715/boj1000.rs +++ /dev/null @@ -1,12 +0,0 @@ -pub fn main() { - let mut input = String::new(); - std::io::stdin().read_line(&mut input).expect("error while getting input"); - - let mut sum = 0; - for string_num in input.split(" ") { - let num: i8 = string_num.trim().parse().expect("error while parsing number"); - sum += num; - } - - println!("{}", sum); -} diff --git a/201902715/boj1001.rs b/201902715/boj1001.rs deleted file mode 100644 index d19d838..0000000 --- a/201902715/boj1001.rs +++ /dev/null @@ -1,12 +0,0 @@ -pub fn main() { - let mut input = String::new(); - std::io::stdin() - .read_line(&mut input) - .expect("error while getting input"); - - let numbers = input.split(" ").map(|s| s.trim().parse::().unwrap()).collect::>(); - let a = numbers.get(0).unwrap(); - let b = numbers.get(1).unwrap(); - - println!("{}", a - b); -} diff --git a/201902715/boj1018.rs b/201902715/boj1018.rs deleted file mode 100644 index 3357706..0000000 --- a/201902715/boj1018.rs +++ /dev/null @@ -1,50 +0,0 @@ -use std::cmp::min; - -fn count_diff(chess_board: &Vec>, start_of_row: i32, start_of_col: i32) -> i32 { - let mut diff = 0; - for row in start_of_row..start_of_row+8 { - let mut current_color = if row % 2 == 0 { 'W' } else { 'B' }; - for col in start_of_col..start_of_col+8 { - let color = chess_board[row as usize][col as usize]; - if !current_color.eq(&color) { - diff += 1; - } - current_color = if current_color.eq(&'W') { 'B' } else { 'W' }; - } - } - - min::(diff, 64-diff) -} - -pub fn main() { - let mut buf = String::new(); - let stdin = std::io::stdin(); - stdin.read_line(&mut buf).unwrap(); - - let wh = buf.trim().split_whitespace().map(|x| x.parse::().unwrap()).collect::>(); - let h = wh[0]; - let w = wh[1]; - - let mut chess_board: Vec> = Vec::new(); - - for _ in 0..h { - buf.clear(); - stdin.read_line(&mut buf).unwrap(); - let line = buf.trim(); - let line: Vec = line.chars().collect(); - chess_board.push(line); - } - - let mut minimum_diff = 64; - - for start_of_row in 0..h-7 { - for start_of_col in 0..w-7 { - let diff = count_diff(&chess_board, start_of_row, start_of_col); - if diff < minimum_diff { - minimum_diff = diff; - } - } - } - - println!("{}", minimum_diff); -} diff --git a/201902715/boj10809.rs b/201902715/boj10809.rs deleted file mode 100644 index 2d34073..0000000 --- a/201902715/boj10809.rs +++ /dev/null @@ -1,33 +0,0 @@ -use std::{collections::HashMap, io::Write}; - -pub fn main() { - let stdin = std::io::stdin(); - let stdout = std::io::stdout(); - let mut out = std::io::BufWriter::new(stdout.lock()); - - let mut s = String::new(); - stdin.read_line(&mut s).unwrap(); - - let alphabet = "abcdefghijklmnopqrstuvwxyz".chars().collect::>(); - let mut position_map: HashMap = HashMap::new(); - - for (i, c) in s.chars().enumerate() { - if position_map.contains_key(&c) { - continue; - } else { - position_map.insert(c, i as i32); - } - } - - for (i, c) in alphabet.iter().enumerate() { - if position_map.contains_key(&c) { - write!(out, "{}", position_map.get(&c).unwrap()).unwrap(); - } else { - write!(out, "-1").unwrap(); - } - - if i < alphabet.len() - 1 { - write!(out, " ").unwrap(); - } - } -} diff --git a/201902715/boj11478.rs b/201902715/boj11478.rs deleted file mode 100644 index 2fb416e..0000000 --- a/201902715/boj11478.rs +++ /dev/null @@ -1,20 +0,0 @@ -use std::collections::HashSet; - -pub fn main() { - let stdin = std::io::stdin(); - let mut buf = String::new(); - - stdin.read_line(&mut buf).unwrap(); - buf = buf.trim().to_string(); - - let mut result: HashSet = HashSet::new(); - - for size_of_str in 1..=(buf.len()) { - for start_idx in 0..=(buf.len() - size_of_str) { - let sub_str = buf.get(start_idx..(start_idx + size_of_str)).unwrap(); - result.insert(sub_str.to_string()); - } - } - - println!("{}", result.len()); -} diff --git a/201902715/boj11729.rs b/201902715/boj11729.rs deleted file mode 100644 index 4207328..0000000 --- a/201902715/boj11729.rs +++ /dev/null @@ -1,28 +0,0 @@ -use std::io::Write; -use std::io::BufWriter; - -fn hanoi_move(n: i32, from: i32, to: i32, other: i32) -> Vec<(i32, i32)> { - if n == 1 { - return vec![(from, to)]; - } - - let move_1 = hanoi_move(n - 1, from, other, to); - let move_2 = vec![(from, to)]; - let move_3 = hanoi_move(n - 1, other, to, from); - - [move_1, move_2, move_3].concat() -} - -pub fn main() { - let mut buf = String::new(); - std::io::stdin().read_line(&mut buf).unwrap(); - - let k: i32 = buf.trim().parse().unwrap(); - let result_vec = hanoi_move(k, 1, 3, 2); - - let mut out = BufWriter::new(std::io::stdout().lock()); - writeln!(out, "{}", result_vec.len()).unwrap(); - for (from, to) in result_vec { - writeln!(out, "{} {}", from, to).unwrap(); - } -} diff --git a/201902715/boj1193.rs b/201902715/boj1193.rs deleted file mode 100644 index e3a785e..0000000 --- a/201902715/boj1193.rs +++ /dev/null @@ -1,86 +0,0 @@ -/* -증가하는 방향이, -짝수 애들은 1/n --> n/1로 가고 -홀수 애들은 n/1 --> 1/n으로 간다. - -시작하는 1/n 혹은 n/1은 (1 + 2 + ... + n-1) + 1 번째 숫자이다. - -n (n - 1) / 2 -*/ - -enum Direction { - Up, - Down, -} - -fn get_direction(n: i32) -> Direction { - if n % 2 == 0 { - Direction::Down - } else { - Direction::Up - } -} - -fn get_start_number(n: i32) -> (i32, i32) { - if n % 2 == 0 { - (1, n) - } else { - (n, 1) - } -} - -fn sum_to_n_minus_1(n: i32) -> i32 { - n * (n - 1) / 2 -} - -pub fn main() { - let mut buf = String::new(); - let stdin = std::io::stdin(); - - stdin.read_line(&mut buf).unwrap(); - - let x: i32 = buf.trim().parse().unwrap(); - - let mut most_close_n = -1; - let mut most_close_distance = std::i32::MAX; - let mut n = 1; - - loop { - let sum = sum_to_n_minus_1(n); - let distance = x - sum - 1; - if distance < 0 { - break; - } - - if distance < most_close_distance { - most_close_distance = distance; - most_close_n = n; - } else { - break; - } - - n += 1; - } - - let direction = get_direction(most_close_n); - let distance = x - sum_to_n_minus_1(most_close_n) - 1; - - // println!("{} {}", most_close_n, distance); - - let mut result = get_start_number(most_close_n); - - for _ in 0..distance { - match direction { - Direction::Up => { - result.0 -= 1; - result.1 += 1; - } - Direction::Down => { - result.0 += 1; - result.1 -= 1; - } - } - } - - println!("{}/{}", result.0, result.1); -} diff --git a/201902715/boj1316.rs b/201902715/boj1316.rs deleted file mode 100644 index 4025f9a..0000000 --- a/201902715/boj1316.rs +++ /dev/null @@ -1,41 +0,0 @@ -use std::collections::HashSet; - -fn is_group_word(word: &str) -> bool { - let mut previous_word: Option = None; - let mut visited_word_set: HashSet = HashSet::new(); - - for ch in word.chars() { - if visited_word_set.contains(&ch) { - return false; - } - - if previous_word.is_none() { - } else if previous_word.unwrap().eq(&ch) { - continue; - } else { - visited_word_set.insert(previous_word.unwrap()); - } - previous_word = Some(ch); - } - - return true; -} - -pub fn main() { - let stdin = std::io::stdin(); - - let mut buf = String::new(); - stdin.read_line(&mut buf).unwrap(); - let n = buf.trim().parse::().unwrap(); - let mut count = 0; - - for _ in 0..n { - buf.clear(); - stdin.read_line(&mut buf).unwrap(); - if is_group_word(&buf) { - count += 1; - } - } - - println!("{}", count); -} diff --git a/201902715/boj1330.rs b/201902715/boj1330.rs deleted file mode 100644 index 80630e1..0000000 --- a/201902715/boj1330.rs +++ /dev/null @@ -1,15 +0,0 @@ -pub fn main() { - let mut input = String::new(); - std::io::stdin().read_line(&mut input).unwrap(); - let numbers = input.split(" ").map(|s| s.trim().parse().unwrap()).collect::>(); - let a = numbers.get(0).unwrap(); - let b = numbers.get(1).unwrap(); - - if a < b { - println!("<"); - } else if a > b { - println!(">"); - } else { - println!("=="); - } -} diff --git a/201902715/boj1427.rs b/201902715/boj1427.rs deleted file mode 100644 index fd5e9ae..0000000 --- a/201902715/boj1427.rs +++ /dev/null @@ -1,9 +0,0 @@ -pub fn main() { - let mut buf = String::new(); - let stdin = std::io::stdin(); - stdin.read_line(&mut buf).unwrap(); - let mut numbers: Vec = buf.trim().chars().map(|c| c.to_digit(10).unwrap()).collect(); - numbers.sort_by(|a, b| b.cmp(a)); - let result = numbers.iter().map(|n| n.to_string()).collect::>().join(""); - println!("{}", result); -} diff --git a/201902715/boj1436.rs b/201902715/boj1436.rs deleted file mode 100644 index eeb602f..0000000 --- a/201902715/boj1436.rs +++ /dev/null @@ -1,18 +0,0 @@ -pub fn main() { - let mut buf = String::new(); - let stdin = std::io::stdin(); - stdin.read_line(&mut buf).unwrap(); - let n = buf.trim().parse::().unwrap(); - - let mut count = 0; - - for num in 0..66610000 { - if num.to_string().contains("666") { - count += 1; - if n == count { - println!("{}", num); - break; - } - } - } -} diff --git a/201902715/boj1546.rs b/201902715/boj1546.rs deleted file mode 100644 index a49a897..0000000 --- a/201902715/boj1546.rs +++ /dev/null @@ -1,23 +0,0 @@ -pub fn main() { - let stdin = std::io::stdin(); - - let mut input = String::new(); - stdin.read_line(&mut input).unwrap(); - let n: f64 = input.trim().parse::().unwrap().into(); - - input.clear(); - stdin.read_line(&mut input).unwrap(); - - let scores = input.split(" ").map(|c| c.trim().parse::().unwrap()); - - let max = scores - .clone() - .fold(0.0, |max, x| if x > max { x } else { max }); - - let sum = scores - .map(|score| score / max * 100.0) - .fold(0.0, |acc, x| acc + x); - - let mean = sum / n; - println!("{}", mean); -} diff --git a/201902715/boj15552.rs b/201902715/boj15552.rs deleted file mode 100644 index cb0d4e1..0000000 --- a/201902715/boj15552.rs +++ /dev/null @@ -1,33 +0,0 @@ -use std::io::{self, Write}; - -fn read_int(n: i8) -> Vec { - assert!(n >= 1, "n should be equal to or larger than 1"); - - let mut result: Vec = Vec::new(); - - let mut buf = String::new(); - std::io::stdin().read_line(&mut buf).unwrap(); - - if n == 1 { - result.push(buf.trim().parse::().unwrap()); - return result; - } else { - return buf - .split(" ") - .map(|c| c.trim().parse().unwrap()) - .collect::>(); - } -} - -pub fn main() { - let stdout = io::stdout(); - let mut out = std::io::BufWriter::new(stdout.lock()); - - let t = *read_int(1).get(0).unwrap(); - for _ in 0..t { - let numbers = read_int(2); - let a = numbers.get(0).unwrap(); - let b = numbers.get(1).unwrap(); - writeln!(out, "{}", a + b).unwrap(); - } -} diff --git a/201902715/boj17103.rs b/201902715/boj17103.rs deleted file mode 100644 index 92a3411..0000000 --- a/201902715/boj17103.rs +++ /dev/null @@ -1,52 +0,0 @@ -use std::io::Write; -use std::io::BufWriter; - -pub fn main() { - let mut prime_arr = [true; 1_000_001]; - prime_arr[0] = false; - prime_arr[1] = false; - - for i in 2..prime_arr.len() { - if prime_arr[i] == false { - continue; - } - - for j in 2.. { - if i * j >= prime_arr.len() { - break; - } - - prime_arr[i * j] = false; - } - } - - let stdin = std::io::stdin(); - let mut buf = String::new(); - let mut out = BufWriter::new(std::io::stdout().lock()); - - stdin.read_line(&mut buf).unwrap(); - let t: i32 = buf.trim().parse().unwrap(); - - for _ in 0..t { - buf.clear(); - stdin.read_line(&mut buf).unwrap(); - let n: i32 = buf.trim().parse().unwrap(); - let mut partitions = 0; - - for i in 2.. { - if i * 2 > n { - break; - } - - if prime_arr[i as usize] == false { - continue; - } - - if prime_arr[(n - i) as usize] { - partitions += 1; - } - } - - writeln!(out, "{}", partitions).unwrap(); - } -} diff --git a/201902715/boj1725.rs b/201902715/boj1725.rs deleted file mode 100644 index f685b2c..0000000 --- a/201902715/boj1725.rs +++ /dev/null @@ -1,35 +0,0 @@ -fn read_int_from_line() -> i64 { - let stdin = std::io::stdin(); - let mut buf = String::new(); - - stdin.read_line(&mut buf).unwrap(); - - buf.trim().parse().unwrap() -} - -pub fn main() { - let n = read_int_from_line(); - let mut histogram: Vec = Vec::new(); - for _ in 0..n { - histogram.push(read_int_from_line()); - } - histogram.push(0); - - let mut stack: Vec<(usize, i64)> = Vec::new(); - let mut answer: i64 = 0; - - for index in 0..histogram.len() { - while !stack.is_empty() && stack.last().unwrap().1 > histogram[index] { - let (last_index, last_height) = stack.pop().unwrap(); - let width = if stack.is_empty() { - index as i64 - } else { - (index - stack.last().unwrap().0 - 1) as i64 - }; - answer = answer.max(width * last_height); - } - stack.push((index, histogram[index])); - } - - println!("{}", answer); -} diff --git a/201902715/boj17298.rs b/201902715/boj17298.rs deleted file mode 100644 index 629e59e..0000000 --- a/201902715/boj17298.rs +++ /dev/null @@ -1,38 +0,0 @@ -use std::io::{BufWriter, Write}; - -pub fn main() { - let stdin = std::io::stdin(); - let mut out = BufWriter::new(std::io::stdout().lock()); - let mut buf = String::new(); - stdin.read_line(&mut buf).unwrap(); - - let n: i32 = buf.trim().parse().unwrap(); - buf.clear(); - - let a = { - stdin.read_line(&mut buf).unwrap(); - buf.split_whitespace().map(|x| x.parse::().unwrap()) - }; - - let mut result = [-1; 1_000_000]; - let mut stack: Vec<(usize, i32)> = Vec::new(); - for (i, elem) in a.enumerate() { - if stack.last().is_none() || (stack.last().is_some() && stack.last().unwrap().1 >= elem) { - } else { - loop { - // 현재 바라보고 있는 원ㅅ와 stack에 들어있는 원소들을 꺼내면서 비교해서 result에 채워넣기 - if stack.last().is_some() && (stack.last().unwrap().1 < elem) { - let last = stack.pop().unwrap(); - result[last.0] = elem; - } else { - break; - } - } - } - stack.push((i, elem)); - } - - for i in 0..n { - write!(out, "{} ", result[i as usize]).unwrap(); - } -} diff --git a/201902715/boj2447.rs b/201902715/boj2447.rs deleted file mode 100644 index 0e44564..0000000 --- a/201902715/boj2447.rs +++ /dev/null @@ -1,52 +0,0 @@ -use std::io::BufWriter; -use std::io::Write; - -fn make_star(start: (usize, usize), end: (usize, usize), star_arr: &mut [[bool; 2187]; 2187]) { - // println!("{} {} -> {} {}", start.0, start.1, end.0, end.1); - - let length_of_1_3: usize = (end.0 - start.0 + 1) / 3; - if length_of_1_3 <= 0 { - return; - } - - for i in start.0 + length_of_1_3..start.0 + length_of_1_3 * 2 { - for j in start.1 + length_of_1_3..start.1 + length_of_1_3 * 2 { - star_arr[i][j] = false; - } - } - - for i in 0..3 { - for j in 0..3 { - make_star( - (start.0 + length_of_1_3 * i, start.1 + length_of_1_3 * j), - ( - start.0 + length_of_1_3 * (i + 1) - 1, - start.1 + length_of_1_3 * (j + 1) - 1, - ), - star_arr, - ) - } - } -} - -pub fn main() { - let mut buf = String::new(); - std::io::stdin().read_line(&mut buf).unwrap(); - let n: i32 = buf.trim().parse().unwrap(); - - let mut star_arr = [[true; i32::pow(3, 7) as usize]; i32::pow(3, 7) as usize]; - make_star((0, 0), ((n - 1) as usize, (n - 1) as usize), &mut star_arr); - - let mut out = BufWriter::new(std::io::stdout().lock()); - - for i in 0..n { - for j in 0..n { - if star_arr[i as usize][j as usize] { - write!(out, "*").unwrap(); - } else { - write!(out, " ").unwrap(); - } - } - writeln!(out, "").unwrap(); - } -} diff --git a/201902715/boj2504.rs b/201902715/boj2504.rs deleted file mode 100644 index 9a57678..0000000 --- a/201902715/boj2504.rs +++ /dev/null @@ -1,114 +0,0 @@ -use std::process::exit; - -#[derive(PartialEq, Clone, Copy)] -enum StackElement { - Number(i32), - NaN(char), -} - -impl StackElement { - fn unwrap_number(self) -> Option { - match self { - StackElement::Number(n) => Some(n), - _ => None, - } - } - - fn unwrap_nan(self) -> Option { - match self { - StackElement::NaN(c) => Some(c), - _ => None, - } - } -} - -pub fn main() { - let mut buf = String::new(); - let stdin = std::io::stdin(); - - stdin.read_line(&mut buf).unwrap(); - - let mut stack: Vec = Vec::new(); - - let open = ['[', '(']; - let close = [']', ')']; - - let mut sum = 0; - - for e in buf.trim().chars() { - // println!("\n---\n{}: {}", e, sum); - - if open.contains(&e) { - stack.push(StackElement::Number(sum)); - sum = 0; - // is ([ - let element = StackElement::NaN(e); - stack.push(element); - } else if close.contains(&e) { - // is )] - let mut popped_element = stack.pop(); - - let current; - let target; - - if e == ')' { - current = e; - target = '('; - } else { - current = e; - target = '['; - } - - loop { - if popped_element.is_none() { - println!("0"); - exit(0); - } - let char_element = popped_element.unwrap().unwrap_nan(); - if char_element.is_some() { - if char_element.unwrap().eq(&target) { - if sum == 0 { - sum = 1; - } - sum = if current == ')' { sum * 2 } else { sum * 3 }; - - let mut remain_num = stack.pop(); - while remain_num.is_some() && remain_num.unwrap().unwrap_number().is_some() { - sum += remain_num.unwrap().unwrap_number().unwrap(); - remain_num = stack.pop(); - } - if remain_num.is_some() { - stack.push(remain_num.unwrap()); - } - break; - } else { - println!("0"); - exit(0); - } - } - - let num_element = popped_element.unwrap().unwrap_number(); - if num_element.is_some() { - sum += num_element.unwrap(); - } else { - println!("0"); - exit(0); - } - - popped_element = stack.pop(); - } - } else { - // is number - let element = StackElement::Number(e.to_string().parse::().unwrap()); - stack.push(element); - } - } - - let remain = stack.pop(); - if remain.is_some() && remain.unwrap().unwrap_nan().is_some() { - println!("0"); - exit(0); - } - - println!("{}", sum); -} diff --git a/201902715/boj25206.rs b/201902715/boj25206.rs deleted file mode 100644 index ea03d3b..0000000 --- a/201902715/boj25206.rs +++ /dev/null @@ -1,40 +0,0 @@ -fn grade_to_score(grade: &str) -> f64 { - match grade.trim() { - "A+" => 4.5, - "A0" => 4.0, - "B+" => 3.5, - "B0" => 3.0, - "C+" => 2.5, - "C0" => 2.0, - "D+" => 1.5, - "D0" => 1.0, - "F" => 0.0, - _ => panic!(), - } -} - -pub fn main() { - let stdin = std::io::stdin(); - let mut buf = String::new(); - - let mut time_sum = 0.0; - let mut score_sum = 0.0; - - for _ in 0..20 { - buf.clear(); - stdin.read_line(&mut buf).unwrap(); - let split = buf.split(" ").collect::>(); - let time = split.get(1).unwrap().parse::().unwrap(); - let grade = split.get(2).unwrap(); - - if grade.trim().eq("P") { - continue; - } - - let score = grade_to_score(grade); - time_sum += time; - score_sum += score * time; - } - - println!("{}", score_sum / time_sum); -} diff --git a/201902715/boj2557.rs b/201902715/boj2557.rs deleted file mode 100644 index 79a1a5a..0000000 --- a/201902715/boj2557.rs +++ /dev/null @@ -1,3 +0,0 @@ -pub fn main() { - println!("Hello World!"); -} diff --git a/201902715/boj2563.rs b/201902715/boj2563.rs deleted file mode 100644 index 0433471..0000000 --- a/201902715/boj2563.rs +++ /dev/null @@ -1,28 +0,0 @@ -pub fn main() { - let mut buf = String::new(); - let stdin = std::io::stdin(); - - stdin.read_line(&mut buf).unwrap(); - let n = buf.trim().parse::().unwrap(); - buf.clear(); - - let mut papers = [0; 10000]; - - for _ in 0..n { - stdin.read_line(&mut buf).unwrap(); - let mut iter = buf.split_whitespace(); - let start_x = iter.next().unwrap().parse::().unwrap(); - let start_y = iter.next().unwrap().parse::().unwrap(); - buf.clear(); - - for x in start_x..(start_x + 10) { - for y in start_y..(start_y + 10) { - let pos: usize = x * 100 + y; - papers[pos] = 1; - } - } - } - - let sum = papers.iter().fold(0, |acc, x| acc + x); - println!("{}", sum); -} diff --git a/201902715/boj2751.rs b/201902715/boj2751.rs deleted file mode 100644 index 031066d..0000000 --- a/201902715/boj2751.rs +++ /dev/null @@ -1,23 +0,0 @@ -use std::io::Write; -use std::io::BufWriter; - -pub fn main() { - let mut buf = String::new(); - let stdin = std::io::stdin(); - let mut out = BufWriter::new(std::io::stdout().lock()); - - stdin.read_line(&mut buf).unwrap(); - - let n = buf.trim().parse::().unwrap(); - let mut arr: Vec = Vec::new(); - for _ in 0..n { - buf.clear(); - stdin.read_line(&mut buf).unwrap(); - arr.push(buf.trim().parse::().unwrap()); - } - - arr.sort(); - for elem in arr.iter() { - writeln!(out, "{}", elem).unwrap(); - } -} diff --git a/201902715/boj2839.rs b/201902715/boj2839.rs deleted file mode 100644 index 9c8bf13..0000000 --- a/201902715/boj2839.rs +++ /dev/null @@ -1,19 +0,0 @@ -pub fn main() { - let mut buf = String::new(); - let stdin = std::io::stdin(); - stdin.read_line(&mut buf).unwrap(); - - let n: i32 = buf.trim().parse().unwrap(); - let mut five_kilo = n / 5; - - while five_kilo >= 0 { - let remain = n - (five_kilo * 5); - if remain % 3 == 0 { - println!("{}", five_kilo + (remain / 3)); - return; - } - five_kilo -= 1; - } - - println!("-1"); -} diff --git a/201902715/boj2884.rs b/201902715/boj2884.rs deleted file mode 100644 index b67c0ce..0000000 --- a/201902715/boj2884.rs +++ /dev/null @@ -1,22 +0,0 @@ -pub fn main() { - let mut buf = String::new(); - std::io::stdin().read_line(&mut buf).unwrap(); - - let numbers = buf - .split(" ") - .map(|s| s.trim().parse::().unwrap()) - .collect::>(); - let mut h = numbers.get(0).unwrap().clone(); - let mut m = numbers.get(1).unwrap().clone(); - - m -= 45; - if m < 0 { - h -= 1; - m += 60; - } - if h < 0 { - h += 24; - } - - println!("{} {}", h, m); -} diff --git a/201902715/boj2941.rs b/201902715/boj2941.rs deleted file mode 100644 index e539db0..0000000 --- a/201902715/boj2941.rs +++ /dev/null @@ -1,46 +0,0 @@ -fn next(buf: &String, start_idx: usize) -> usize { - let croatia = ["c=", "c-", "dz=", "d-", "lj", "nj", "s=", "z="].to_vec(); - - let mut candidates = croatia.clone(); - for i in start_idx..buf.len() { - let ch = buf.chars().nth(i).unwrap(); - let mut new_candidates = Vec::new(); - - for candidate in candidates { - if candidate.starts_with(ch) { - new_candidates.push(candidate.get(1..).unwrap()); - } - } - - candidates = new_candidates; - - if candidates.len() == 0 { - return start_idx + 1; - } - - if candidates.len() == 1 { - if (*candidates.get(0).unwrap()).eq("") { - return i + 1; - } - } - } - - return start_idx + 1; -} - -pub fn main() { - let stdin = std::io::stdin(); - let mut buf = String::new(); - - stdin.read_line(&mut buf).unwrap(); - buf = buf.trim().to_string(); - - let mut count = 0; - let mut i = 0; - while i < buf.len() { - i = next(&buf, i); - count += 1; - } - - println!("{}", count); -} diff --git a/201902715/boj3015.rs b/201902715/boj3015.rs deleted file mode 100644 index 0927722..0000000 --- a/201902715/boj3015.rs +++ /dev/null @@ -1,77 +0,0 @@ -fn read_int_from_line() -> i64 { - let stdin = std::io::stdin(); - let mut buf = String::new(); - stdin.read_line(&mut buf).unwrap(); - buf.trim().parse::().unwrap() -} - -pub fn main() { - let n = read_int_from_line(); - let mut arr: Vec<(i64, i64)> = Vec::new(); - arr.push((read_int_from_line(), 1)); - // let mut count: i64 = 0; - - for _ in 1..n { - let new_person = read_int_from_line(); - let last_person_in_stack = arr.last().unwrap(); - - if last_person_in_stack.0 == new_person { - let (height, count) = arr.pop().unwrap(); - arr.push((height, count + 1)); - } else { - arr.push((new_person, 1)); - } - } - - // println!("input : {:?}", arr); - - let mut sum = 0; - let mut stack: Vec<(i64, i64)> = Vec::new(); // height 내림차순으로만 저장 - stack.push(*arr.get(0).unwrap()); - for i in 1..arr.len() { - // println!("stack : {:?}", stack); - - let (height, mut count) = *arr.get(i).unwrap(); - let (mut last_height, mut last_count) = stack.last().unwrap(); - if last_height > height { - } else if last_height < height { - while last_height < height { - stack.pop(); - sum += if stack.is_empty() { - last_count - } else { - last_count * 2 - }; - sum += (last_count * (last_count - 1)) / 2; - if stack.is_empty() { - break; - } - (last_height, last_count) = *stack.last().unwrap(); - } - } - - if last_height == height { - while last_height == height { - stack.pop(); - count += last_count; - if stack.is_empty() { - break; - } - (last_height, last_count) = *stack.last().unwrap(); - } - } - - stack.push((height, count)); - } - - while !stack.is_empty() { - let (_, count) = stack.pop().unwrap(); - sum += if stack.is_empty() { 0 } else { count }; - sum += (count * (count - 1)) / 2; - } - - // println!("sum : {}", sum); - // println!("stack : {:?}", stack); - - println!("{}", sum); -} diff --git a/201902715/boj4948.rs b/201902715/boj4948.rs deleted file mode 100644 index ff0a74e..0000000 --- a/201902715/boj4948.rs +++ /dev/null @@ -1,41 +0,0 @@ -pub fn main() { - const MAX_2N: usize = 123456 * 2; - let mut prime_arr = [true; MAX_2N + 1]; - prime_arr[0] = false; - prime_arr[1] = false; - for i in 2..prime_arr.len() { - if prime_arr[i] == false { - continue; - } - - for mul in 2.. { - if i * mul >= prime_arr.len() { - break; - } - - prime_arr[i * mul] = false; - } - } - - let stdin = std::io::stdin(); - let mut buf = String::new(); - - loop { - buf.clear(); - stdin.read_line(&mut buf).unwrap(); - let n: i32 = buf.trim().parse().unwrap(); - - if n == 0 { - break; - } - - let mut count = 0; - for i in n+1..=2 * n { - if prime_arr[i as usize] { - count += 1; - } - } - - println!("{}", count); - } -} diff --git a/201902715/boj6549.rs b/201902715/boj6549.rs deleted file mode 100644 index 14303d7..0000000 --- a/201902715/boj6549.rs +++ /dev/null @@ -1,33 +0,0 @@ -pub fn main() { - loop { - let stdin = std::io::stdin(); - let mut line = String::new(); - stdin.read_line(&mut line).unwrap(); - let n = line.trim().parse::(); - if n.is_ok_and(|n| n == 0) { - break; - } - - let mut histogram: Vec = line.split_whitespace().map(|x| x.parse().unwrap()).collect(); - histogram.remove(0); - histogram.push(0); - - let mut stack: Vec<(usize, i64)> = Vec::new(); - let mut answer: i64 = 0; - - for index in 0..histogram.len() { - while !stack.is_empty() && stack.last().unwrap().1 > histogram[index] { - let (_, last_height) = stack.pop().unwrap(); - let width = if stack.is_empty() { - index as i64 - } else { - (index - stack.last().unwrap().0 - 1) as i64 - }; - answer = answer.max(width * last_height); - } - stack.push((index, histogram[index])); - } - - println!("{}", answer); - } -} diff --git a/201902715/boj9935.rs b/201902715/boj9935.rs deleted file mode 100644 index 6c02042..0000000 --- a/201902715/boj9935.rs +++ /dev/null @@ -1,52 +0,0 @@ -pub fn main() { - let mut string = String::new(); - let mut bomb = String::new(); - let stdin = std::io::stdin(); - - stdin.read_line(&mut string).unwrap(); - let string = string.trim(); - - stdin.read_line(&mut bomb).unwrap(); - let bomb = bomb.trim(); - let last_ch_of_bomb = bomb.chars().rev().next().unwrap(); - - let mut stack: Vec = Vec::new(); - let mut buf: Vec = Vec::new(); - - for ch in string.chars() { - stack.push(ch); - if ch.eq(&last_ch_of_bomb) { - let mut reversed_bomb = bomb.chars().rev(); - loop { - let current_cmp = reversed_bomb.next(); - if current_cmp.is_none() { - buf.clear(); - break; - } else { - let current_cmp = current_cmp.unwrap(); - let last_elem_of_stack = stack.pop(); - if last_elem_of_stack.is_none() { - break; - } else { - let last_elem_of_stack = last_elem_of_stack.unwrap(); - buf.push(last_elem_of_stack); - if !last_elem_of_stack.eq(¤t_cmp) { - break; - } - } - } - } - while !buf.is_empty() { - stack.push(buf.pop().unwrap()); - } - } - } - - if stack.is_empty() { - print!("FRULA"); - } else { - for ch in stack { - print!("{}", ch); - } - } -} diff --git a/201902716/2024.03.23_2083.py b/201902716/2024.03.23_2083.py deleted file mode 100644 index 00fa696..0000000 --- a/201902716/2024.03.23_2083.py +++ /dev/null @@ -1,13 +0,0 @@ -import sys - -while True: - data = list(map(str, sys.stdin.readline().split())) - if data[0] == "#": - break - - name, age, weight = data[0], int(data[1]), int(data[2]) - - if age > 17 or weight >= 80: - print(name, 'Senior') - else: - print(name, 'Junior') diff --git a/201902716/2024.03.23_2480.py b/201902716/2024.03.23_2480.py deleted file mode 100644 index ee10107..0000000 --- a/201902716/2024.03.23_2480.py +++ /dev/null @@ -1,15 +0,0 @@ -import sys - -dice = list(map(int, sys.stdin.readline().split())) -dice.sort() - -reward = 0 - -if dice[0] == dice[1] == dice[2]: - reward = 10000 + dice[0] * 1000 -elif dice[0] == dice[1] or dice[1] == dice[2]: - reward = 1000 + dice[1] * 100 -else: - reward = max(dice)* 100 - -print(reward) diff --git a/201902716/2024.03.23_2752.py b/201902716/2024.03.23_2752.py deleted file mode 100644 index 2b9dc42..0000000 --- a/201902716/2024.03.23_2752.py +++ /dev/null @@ -1,6 +0,0 @@ -import sys - -data = list(map(int, sys.stdin.readline().split())) -data.sort() - -print(*data) diff --git a/201902716/2024.03.23_4299.py b/201902716/2024.03.23_4299.py deleted file mode 100644 index a9c8b3d..0000000 --- a/201902716/2024.03.23_4299.py +++ /dev/null @@ -1,11 +0,0 @@ -import sys - -sum, sub = map(int, sys.stdin.readline().split()) - -a = (sum + sub) // 2 -b = sum - a - -if b < 0 or (sum + sub) % 2 != 0: - print(-1) -else: - print(max(a, b), min(a, b)) diff --git a/201902716/2024.03.23_4470.py b/201902716/2024.03.23_4470.py deleted file mode 100644 index 3971e96..0000000 --- a/201902716/2024.03.23_4470.py +++ /dev/null @@ -1,6 +0,0 @@ -import sys - -N = int(sys.stdin.readline()) -for i in range(N): - line = sys.stdin.readline().rstrip() - print("{}. {}".format(i + 1, line)) diff --git a/201902716/2024.03.23_5524.py b/201902716/2024.03.23_5524.py deleted file mode 100644 index dc450ad..0000000 --- a/201902716/2024.03.23_5524.py +++ /dev/null @@ -1,7 +0,0 @@ -import sys - -N = int(sys.stdin.readline()) -names = [sys.stdin.readline().rstrip().lower() for _ in range(N)] - -for name in names: - print(name) diff --git a/201902716/2024.03.23_5532.py b/201902716/2024.03.23_5532.py deleted file mode 100644 index 62ab73b..0000000 --- a/201902716/2024.03.23_5532.py +++ /dev/null @@ -1,12 +0,0 @@ -import sys - -L = int(sys.stdin.readline()) -A = int(sys.stdin.readline()) -B = int(sys.stdin.readline()) -C = int(sys.stdin.readline()) -D = int(sys.stdin.readline()) - -korean = A // C + (1 if A % C else 0) -math = B // D + (1 if B % D else 0) - -print(L - max(korean, math)) diff --git a/201902716/2024.03.23_5543.py b/201902716/2024.03.23_5543.py deleted file mode 100644 index 3eb04b7..0000000 --- a/201902716/2024.03.23_5543.py +++ /dev/null @@ -1,9 +0,0 @@ -import sys - -Hadeok = int(sys.stdin.readline()) -Jungdeok = int(sys.stdin.readline()) -Sangdeok = int(sys.stdin.readline()) -Coke = int(sys.stdin.readline()) -Sprite = int(sys.stdin.readline()) - -print(min(Hadeok, Jungdeok, Sangdeok) + min(Coke, Sprite) - 50) diff --git a/201902716/2024.03.23_5575.py b/201902716/2024.03.23_5575.py deleted file mode 100644 index b335b26..0000000 --- a/201902716/2024.03.23_5575.py +++ /dev/null @@ -1,13 +0,0 @@ -import sys - -for _ in range(3): - sh, sm, ss, eh, em, es = map(int, sys.stdin.readline().split()) - s = sh * 3600 + sm * 60 + ss - e = eh * 3600 + em * 60 + es - t = e - s - h = t // 3600 - t %= 3600 - m = t // 60 - t %= 60 - s = t - print(h, m, s) diff --git a/201902716/2024.03.29_11721.py b/201902716/2024.03.29_11721.py deleted file mode 100644 index 8a357b0..0000000 --- a/201902716/2024.03.29_11721.py +++ /dev/null @@ -1,7 +0,0 @@ -import sys - -N = sys.stdin.readline().rstrip() -l = len(N) - -for i in range(l // 10 + (1 if l % 10 != 0 else 0)): - print(N[i*10:i*10+10]) diff --git a/201902716/2024.03.29_15894.py b/201902716/2024.03.29_15894.py deleted file mode 100644 index 0e4e667..0000000 --- a/201902716/2024.03.29_15894.py +++ /dev/null @@ -1,4 +0,0 @@ -import sys - -N = int(sys.stdin.readline().rstrip()) -print(N * 4) diff --git a/201902716/2024.03.29_1697.py b/201902716/2024.03.29_1697.py deleted file mode 100644 index 7009b5c..0000000 --- a/201902716/2024.03.29_1697.py +++ /dev/null @@ -1,22 +0,0 @@ -import sys -from collections import deque - -X, K = map(int, sys.stdin.readline().split()) - - -def bfs(X, K): - visited = [False] * 100001 - queue = deque([(X, 0)]) - visited[X] = True - - while queue: - cur_x, t = queue.popleft() - if cur_x == K: - return t - for next_x in (cur_x - 1, cur_x + 1, cur_x * 2): - if 0 <= next_x <= 100000 and not visited[next_x]: - visited[next_x] = True - queue.append((next_x, t + 1)) - - -print(bfs(X, K)) diff --git a/201902716/2024.03.29_1931.py b/201902716/2024.03.29_1931.py deleted file mode 100644 index 57dd001..0000000 --- a/201902716/2024.03.29_1931.py +++ /dev/null @@ -1,19 +0,0 @@ -import sys - -N = int(sys.stdin.readline().rstrip()) -times = [] - -for _ in range(N): - times.append(list(map(int, sys.stdin.readline().split()))) - -times.sort(key=lambda x: (x[1], x[0])) - -end = 0 -cnt = 0 - -for time in times: - if time[0] >= end: - cnt += 1 - end = time[1] - -print(cnt) diff --git a/201902716/2024.03.29_2446.py b/201902716/2024.03.29_2446.py deleted file mode 100644 index 02268d6..0000000 --- a/201902716/2024.03.29_2446.py +++ /dev/null @@ -1,8 +0,0 @@ -import sys - -N = int(sys.stdin.readline()) - -for i in range(N, 1, -1): - print((N-i)*" "+(2*i-1)*"*") -for j in range(1, N+1): - print((N-j)*" "+(2*j-1)*"*") diff --git a/201902716/2024.03.29_2606.py b/201902716/2024.03.29_2606.py deleted file mode 100644 index 2fd4217..0000000 --- a/201902716/2024.03.29_2606.py +++ /dev/null @@ -1,30 +0,0 @@ -import sys - -computer_N = int(sys.stdin.readline().rstrip()) -line_N = int(sys.stdin.readline().rstrip()) -lines = [] - -for _ in range(line_N): - lines.append(list(map(int, sys.stdin.readline().split()))) - -graph = {i: [] for i in range(1, computer_N + 1)} - -for line in lines: - graph[line[0]].append(line[1]) - graph[line[1]].append(line[0]) - - -def bfs(start, graph): - visited = [] - queue = [start] - - while queue: - node = queue.pop(0) - if node not in visited: - visited.append(node) - queue += graph[node] - - return visited - - -print(len(bfs(1, graph)) - 1) diff --git a/201902716/2024.04.01_10808.py b/201902716/2024.04.01_10808.py deleted file mode 100644 index bba426d..0000000 --- a/201902716/2024.04.01_10808.py +++ /dev/null @@ -1,9 +0,0 @@ -import sys - -S = sys.stdin.readline().rstrip() -alphabet = [0] * 26 - -for s in S: - alphabet[ord(s) - 97] += 1 - -print(' '.join(map(str, alphabet))) diff --git a/201902716/2024.04.01_11399.py b/201902716/2024.04.01_11399.py deleted file mode 100644 index 2367f5d..0000000 --- a/201902716/2024.04.01_11399.py +++ /dev/null @@ -1,14 +0,0 @@ -import sys - -N = int(sys.stdin.readline().rstrip()) - -dp = [0] * 1001 -people = list(map(int, sys.stdin.readline().split())) - -people.sort() - -dp[1] = people[0] -for i in range(2, len(people) + 1): - dp[i] = dp[i - 1] + people[i - 1] - -print(sum(dp)) diff --git a/201902716/2024.04.01_2630.py b/201902716/2024.04.01_2630.py deleted file mode 100644 index 125092f..0000000 --- a/201902716/2024.04.01_2630.py +++ /dev/null @@ -1,33 +0,0 @@ -import sys - -N = int(sys.stdin.readline().rstrip()) -color_paper = [] -b_num = 0 -w_num = 0 - -for _ in range(N): - color_paper.append(list(map(int, sys.stdin.readline().split()))) - - -def divide(x, y, n): - global b_num - global w_num - - color = color_paper[x][y] - for i in range(x, x + n): - for j in range(y, y + n): - if color != color_paper[i][j]: - divide(x, y, n // 2) - divide(x, y + n // 2, n // 2) - divide(x + n // 2, y, n // 2) - divide(x + n // 2, y + n // 2, n // 2) - return - - if color == 1: - b_num += 1 - else: - w_num += 1 - -divide(0, 0, N) -print(w_num) -print(b_num) diff --git a/201902716/2024.04.01_9095.py b/201902716/2024.04.01_9095.py deleted file mode 100644 index 6c61fd0..0000000 --- a/201902716/2024.04.01_9095.py +++ /dev/null @@ -1,15 +0,0 @@ -import sys - -T = int(sys.stdin.readline().rstrip()) - -dp = [0] * 11 -dp[1] = 1 -dp[2] = 2 -dp[3] = 4 - -for i in range(4, 11): - dp[i] = dp[i - 1] + dp[i - 2] + dp[i - 3] - -for _ in range(T): - n = int(sys.stdin.readline().rstrip()) - print(dp[n]) diff --git a/201902716/2024.04.02_11724.py b/201902716/2024.04.02_11724.py deleted file mode 100644 index d47820a..0000000 --- a/201902716/2024.04.02_11724.py +++ /dev/null @@ -1,27 +0,0 @@ -import sys -sys.setrecursionlimit(10 ** 5) - - -def dfs(n): - visited[n] = True - for i in graph[n]: - if not visited[i]: - dfs(i) - - -N, M = map(int, sys.stdin.readline().split()) -graph = {i: [] for i in range(1, N + 1)} -visited = [False] * (N + 1) -cnt = 0 - -for _ in range(M): - a, b = map(int, sys.stdin.readline().split()) - graph[a].append(b) - graph[b].append(a) - -for i in range(1, N + 1): - if not visited[i]: - dfs(i) - cnt += 1 - -print(cnt) diff --git a/201902738/1009.py b/201902738/1009.py deleted file mode 100644 index a1035c1..0000000 --- a/201902738/1009.py +++ /dev/null @@ -1,17 +0,0 @@ -import sys - -def power(k, n): - result = 1 - while n > 0: - if n % 2 == 1: - result = (result * k) % 10 - n //= 2 - k = k * k % 10 - - return result - -T = int(sys.stdin.readline()) -for _ in range(T): - a, b = map(int, sys.stdin.readline().strip().split(' ')) - c = power(a, b) - print(10 if c == 0 else c) diff --git a/201902738/1012.py b/201902738/1012.py deleted file mode 100644 index 3cd86b4..0000000 --- a/201902738/1012.py +++ /dev/null @@ -1,36 +0,0 @@ -import sys - -T = int(sys.stdin.readline()) - -dx = [-1, 1, 0, 0] -dy = [0, 0, 1, -1] - -def bfs(x, y): - queue = [(x, y)] - land[x][y] = -1 - while queue: - x, y = queue.pop() - for i in range(4): - nx = x + dx[i] - ny = y + dy[i] - if nx >= 0 and ny >= 0 and nx < N and ny < M and land[nx][ny] == 1: - queue.append((nx, ny)) - land[nx][ny] = -1 - -if __name__ == '__main__': - for _ in range(T): - M, N, K = map(int, sys.stdin.readline().strip().split(' ')) - land = [[0] * M for _ in range(N)] - - for _ in range(K): - x, y = map(int, sys.stdin.readline().strip().split(' ')) - land[y][x] = 1 - - worm = 0 - for i in range(N): - for j in range(M): - if land[i][j] == 1: - bfs(i, j) - worm += 1 - print(worm) - \ No newline at end of file diff --git a/201902738/10171.py b/201902738/10171.py deleted file mode 100644 index 808f830..0000000 --- a/201902738/10171.py +++ /dev/null @@ -1,5 +0,0 @@ - -print("\\ /\\") -print(" ) ( ')") -print("( / )") -print(" \\(__)|") diff --git a/201902738/10172.py b/201902738/10172.py deleted file mode 100644 index d05aadf..0000000 --- a/201902738/10172.py +++ /dev/null @@ -1,5 +0,0 @@ -print("|\\_/|") -print("|q p| /}") -print("( 0 )\"\"\"\\") -print("|\"^\"` |") -print("||_/=\\\\__|") diff --git a/201902738/10250.py b/201902738/10250.py deleted file mode 100644 index 9d35bb0..0000000 --- a/201902738/10250.py +++ /dev/null @@ -1,11 +0,0 @@ -import sys - -T = int(sys.stdin.readline()) -for _ in range(T): - H, W, N = map(int, sys.stdin.readline().split()) - floor = N % H - room = N // H + 1 - if floor == 0: - floor = H - room -= 1 - print(floor * 100 + room) \ No newline at end of file diff --git a/201902738/1032.py b/201902738/1032.py deleted file mode 100644 index d65ab03..0000000 --- a/201902738/1032.py +++ /dev/null @@ -1,14 +0,0 @@ -import sys - -T = int(sys.stdin.readline()) -string = [] -for _ in range(T): - s = sys.stdin.readline().strip() - if not string: - string = list(s) - else: - for i in range(0, len(string)): - if string[i] != s[i]: - string[i] = '?' - -print(''.join(string)) diff --git a/201902738/1049.py b/201902738/1049.py deleted file mode 100644 index e048907..0000000 --- a/201902738/1049.py +++ /dev/null @@ -1,19 +0,0 @@ -import sys - -N, M = map(int, sys.stdin.readline().split()) - -S = 1000 -O = 1000 -for i in range(M): - line_s, line_o = map(int, sys.stdin.readline().split()) - if line_s > line_o * 6: - line_s = line_o * 6 - if S > line_s: - S = line_s - if O > line_o: - O = line_o - -if S > O * 6: - S = O * 6 - -print(S * (N // 6) + min(S ,O * (N % 6))) diff --git a/201902738/1051.py b/201902738/1051.py deleted file mode 100644 index 693a4be..0000000 --- a/201902738/1051.py +++ /dev/null @@ -1,21 +0,0 @@ -import sys - -N, M = map(int, sys.stdin.readline().strip().split(' ')) -s = min(N, M) -rect = [] -for _ in range(N): - num = sys.stdin.readline().strip() - rect.append(list(map(int, num))) -res = 1 -if s != 1: - for i in range(N): - for j in range(M): - n = rect[i][j] - for k in range(1, s): - if i + k < N and j + k < M: - if n == rect[i+k][j] == rect[i][j+k] == rect[i+k][j+k]: - print("i:", i, "j:", j, "k:", k) - res = max(res, (k + 1) ** 2) - - -print(res) diff --git a/201902738/1057.py b/201902738/1057.py deleted file mode 100644 index e039971..0000000 --- a/201902738/1057.py +++ /dev/null @@ -1,18 +0,0 @@ -import sys - -N, K, I = map(int, sys.stdin.readline().strip().split(' ')) -cnt = 0 -while K != I: - if K % 2== 0: - K = K // 2 - else: - K = (K + 1) // 2 - - if I % 2 == 0: - I = I // 2 - else: - I = (I + 1) // 2 - - cnt += 1 - -print(cnt) diff --git a/201902738/1059.py b/201902738/1059.py deleted file mode 100644 index 91052da..0000000 --- a/201902738/1059.py +++ /dev/null @@ -1,34 +0,0 @@ -import sys - -L = int(sys.stdin.readline()) -S = list(map(int, sys.stdin.readline().strip().split(' '))) -n = int(sys.stdin.readline()) - -res = 0 -if n in S: - print(res) -else: - S.append(n) - S.sort() - idx = S.index(n) - print("S: ", S) - if idx == 0: - for i in range(1, n + 1): - for j in range(i, S[1]): - if j >= n and i < j: - print(f"i: {i} j: {j}") - res += 1 - - elif idx == len(S) - 1: - for i in range(S[idx - 1], n + 1): - for j in range(i, 1001): - if j >= n and i < j: - print(f"i: {i} j: {j}") - res += 1 - else: - for i in range(S[idx - 1] + 1, n + 1): - for j in range(i, S[idx + 1]): - if j >= n and i < j: - print(f"i: {i} j: {j}") - res += 1 - print(res) diff --git a/201902738/1063.py b/201902738/1063.py deleted file mode 100644 index 7eabbb6..0000000 --- a/201902738/1063.py +++ /dev/null @@ -1,69 +0,0 @@ -import sys - - -def move_piece(direction, piece): - chk = True - if direction == 'R': - if piece[0] + 1 <= 7: - piece[0] += 1 - else: - chk = False - elif direction == 'L': - if piece[0] - 1 >= 0: - piece[0] -= 1 - else: - chk = False - elif direction == 'B': - if piece[1] - 1 >= 0: - piece[1] -= 1 - else: - chk = False - elif direction == 'T': - if piece[1] + 1 <= 7: - piece[1] += 1 - else: - chk = False - elif direction == 'RT': - if piece[0] + 1 <= 7 and piece[1] + 1 <= 7: - piece[0] += 1 - piece[1] += 1 - else: - chk = False - elif direction == 'LT': - if piece[0] - 1 >= 0 and piece[1] + 1 <= 7: - piece[0] -= 1 - piece[1] += 1 - else: - chk = False - elif direction == 'RB': - if piece[0] + 1 <= 7 and piece[1] - 1 >= 0: - piece[0] += 1 - piece[1] -= 1 - else: - chk = False - elif direction == 'LB': - if piece[0] - 1 >= 0 and piece[1] - 1 >= 0: - piece[0] -= 1 - piece[1] -= 1 - else: - chk = False - return chk - - -K, S, N = map(str, sys.stdin.readline().strip().split(' ')) - -King = [int(ord(K[0])) - ord('A'), int(K[1]) - 1] -Stone = [int(ord(S[0])) - ord('A'), int(S[1]) - 1] - -for i in range(int(N)): - move = sys.stdin.readline().strip() - tmp = King.copy() - - move_piece(move, King) - if King == Stone: - if not move_piece(move, Stone): - King = tmp.copy() - - -print(chr(King[0] + 65) + str(King[1] + 1)) -print(chr(Stone[0] + 65) + str(Stone[1] + 1)) diff --git a/201902738/1072.py b/201902738/1072.py deleted file mode 100644 index 1be0227..0000000 --- a/201902738/1072.py +++ /dev/null @@ -1,20 +0,0 @@ -import sys - -X, Y = map(int, sys.stdin.readline().split()) - -rate = int((Y * 100) / X) -start = 1 -end = 10 ** 9 + X - - -change = False -cnt = 0 -while start <= end: - mid = (start + end) // 2 - if int((Y+mid) * 100/(X+mid)) > rate: - change = True - end = mid - 1 - else: - start = mid + 1 - -print(start if change else -1) diff --git a/201902738/1075.py b/201902738/1075.py deleted file mode 100644 index 291b3a3..0000000 --- a/201902738/1075.py +++ /dev/null @@ -1,10 +0,0 @@ -N = int(input()) -F = int(input()) - -p = N % 100 -Np = N - p -NpF = Np % F -if NpF == 0: - print('00') -else: - print(str(F - NpF).zfill(2)) diff --git a/201902738/10814.py b/201902738/10814.py deleted file mode 100644 index c0c81e2..0000000 --- a/201902738/10814.py +++ /dev/null @@ -1,13 +0,0 @@ -import sys - -T = int(sys.stdin.readline()) - -data = [] -for _ in range(0, T): - A, B = sys.stdin.readline().strip().split(' ') - data.append([int(A), B]) - -sort_data = sorted(data, key=lambda x: x[0]) - -for k, v in sort_data: - print(k, v) diff --git a/201902738/10866.py b/201902738/10866.py deleted file mode 100644 index c7ab03a..0000000 --- a/201902738/10866.py +++ /dev/null @@ -1,24 +0,0 @@ -import sys - -N = int(sys.stdin.readline()) -deque = list() - -for _ in range(N): - input = sys.stdin.readline().strip().split() - match input[0]: - case "push_front": - deque.insert(0, input[1]) - case "push_back": - deque.append(input[1]) - case "pop_front": - print(deque.pop(0) if deque else -1) - case "pop_back": - print(deque.pop() if deque else -1) - case "size": - print(len(deque)) - case "empty": - print(0 if deque else 1) - case "front": - print(deque[0] if deque else -1) - case "back": - print(deque[-1] if deque else -1) \ No newline at end of file diff --git a/201902738/1094.py b/201902738/1094.py deleted file mode 100644 index 5019b86..0000000 --- a/201902738/1094.py +++ /dev/null @@ -1,5 +0,0 @@ -import sys - -X = int(sys.stdin.readline()) -X = format(X, 'b') -print(X.count('1')) diff --git a/201902738/11050.py b/201902738/11050.py deleted file mode 100644 index bbfe17d..0000000 --- a/201902738/11050.py +++ /dev/null @@ -1,12 +0,0 @@ -import sys - -def factorial(n): - if n == 1 or n == 0: - return 1 - else: - return n * factorial(n - 1) - -N, K = map(int, sys.stdin.readline().split()) -M = N - K - -print(factorial(N) // (factorial(K) * factorial(M))) diff --git a/201902738/1120.py b/201902738/1120.py deleted file mode 100644 index b30eeeb..0000000 --- a/201902738/1120.py +++ /dev/null @@ -1,17 +0,0 @@ -import sys - -def check_diff(A, B): - res = 0 - for i in range(len(A)): - if A[i] != B[i]: - res += 1 - return res - -A, B = sys.stdin.readline().strip().split(' ') - -min_res = 51 -for i in range(0, len(B)-len(A) + 1): - res = check_diff(A, B[i:i+len(A)]) - if res < min_res: - min_res = res -print(min_res) diff --git a/201902738/1124.py b/201902738/1124.py deleted file mode 100644 index 9c8d661..0000000 --- a/201902738/1124.py +++ /dev/null @@ -1,47 +0,0 @@ -import sys - - -def prime_list(n): - chk = [True] * 100001 - under = [0] * 100001 - for x in range(2, 100001): - if chk[x]: - for y in range(x + x, n, x): - chk[y] = False - num = y - while num % x == 0: - num //= x - under[y] += 1 - # res = {} - # for z in range(2, n): - # if not chk[i]: - # res. - # res.append([z, under[z]]) - return under, [i for i in range(2, n) if chk[i]] - - -A, B = map(int, sys.stdin.readline().strip().split(' ')) -CNT = 0 - -under_prime, prime = prime_list(B + 1) -# print(prime) -# print(under_prime) -for i in range(A, B + 1): - if under_prime[i] in prime: - CNT += 1 -# for i in range(A, B+1): -# if i in prime: -# continue -# else: -# TMP = 0 -# k = i -# for j in range(2, int(k ** 0.5) + 1): -# while k % j == 0: -# k //= j -# TMP += 1 -# if k != 1: -# TMP += 1 -# if TMP in prime: -# CNT += 1 - -print(CNT) diff --git a/201902738/1138.py b/201902738/1138.py deleted file mode 100644 index c261e8b..0000000 --- a/201902738/1138.py +++ /dev/null @@ -1,13 +0,0 @@ -import sys - -N = int(sys.stdin.readline()) -people = list(map(int, sys.stdin.readline().strip().split(' '))) -people.reverse() - -height = [] -for i in range(N, 0, -1): - k = people[N - i] - # print('i:', i, 'k:', k) - height.insert(k, i) - -print(' '.join(map(str, height))) diff --git a/201902738/1141.py b/201902738/1141.py deleted file mode 100644 index e1a1517..0000000 --- a/201902738/1141.py +++ /dev/null @@ -1,21 +0,0 @@ -import sys - -N = int(sys.stdin.readline()) -words = [] -for _ in range(N): - words.append(sys.stdin.readline().strip()) - -words.sort(key=lambda x: (len(x), x)) - -result = [] -for i in range(N): - w = words[i] - chk = False - for j in range(i + 1, N): - if words[j].startswith(w): - chk = True - break - if not chk: - result.append(w) - -print(len(result)) diff --git a/201902738/1145.py b/201902738/1145.py deleted file mode 100644 index 320b7f5..0000000 --- a/201902738/1145.py +++ /dev/null @@ -1,15 +0,0 @@ -import sys - -num = list(map(int, sys.stdin.readline().strip().split(' '))) - -s = min(num) -while True: - res = 0 - for i in num: - if s % i == 0: - res += 1 - if res >= 3: - break - s += 1 - -print(s) diff --git a/201902738/1166.py b/201902738/1166.py deleted file mode 100644 index 72df16f..0000000 --- a/201902738/1166.py +++ /dev/null @@ -1,17 +0,0 @@ -import sys - -N, L, W, H = map(float, sys.stdin.readline().strip().split(' ')) -N = int(N) -end = max(L, W, H) -START = 0 -for _ in range(10000): - mid = (START + end) / 2 - k = (L // mid) * (W // mid) * (H // mid) - # print('start:', START, 'end:', end) - # print('mid:', mid, 'k:', k) - if k >= N: - START = mid - else: - end = mid - -print(f'{end:.10f}') diff --git a/201902738/11726.py b/201902738/11726.py deleted file mode 100644 index 314614a..0000000 --- a/201902738/11726.py +++ /dev/null @@ -1,10 +0,0 @@ -import sys - -n = int(sys.stdin.readline()) - -tile = [0 for i in range(10 ** 6)] -tile[1] = 1 -tile[2] = 2 -for i in range(3, n + 1): - tile[i] = tile[i - 1] + tile[i - 2] -print(tile[n] % 10007) diff --git a/201902738/1181.py b/201902738/1181.py deleted file mode 100644 index 968554f..0000000 --- a/201902738/1181.py +++ /dev/null @@ -1,12 +0,0 @@ -import sys - -N = int(sys.stdin.readline()) -words = list() -for _ in range(N): - s = sys.stdin.readline().strip() - if s not in words: - words.append(s) - -words.sort(key=lambda x: (len(x), x)) -for w in words: - print(w) diff --git a/201902738/1183.py b/201902738/1183.py deleted file mode 100644 index 3b95509..0000000 --- a/201902738/1183.py +++ /dev/null @@ -1,15 +0,0 @@ -import sys - -N = int(sys.stdin.readline()) -time = [] -for _ in range(N): - A, B = map(int, sys.stdin.readline().strip().split(' ')) - C = B - A - time.append(C) - -time.sort() -if len(time) % 2 == 1: - print(1) -else: - half = len(time) // 2 - print(time[half] - time[half - 1] + 1) diff --git a/201902738/11866.py b/201902738/11866.py deleted file mode 100644 index 084fa1d..0000000 --- a/201902738/11866.py +++ /dev/null @@ -1,17 +0,0 @@ -import sys - -N, K = map(int, sys.stdin.readline().split()) - -p = list(x for x in range(1, N + 1)) -result = [] -IDX = 0 -while p: - IDX += K - 1 - if IDX >= len(p): - IDX %= len(p) - tmp = p.pop(IDX) - result.append(tmp) - -print('<', end='') -print(', '.join(map(str, result)), end='') -print('>') diff --git a/201902738/1259.py b/201902738/1259.py deleted file mode 100644 index f4ab438..0000000 --- a/201902738/1259.py +++ /dev/null @@ -1,12 +0,0 @@ -import sys - -while True: - palindrome = sys.stdin.readline().strip() - if palindrome == '0': - break - rev = reversed(list(palindrome)) - rev = ''.join(rev) - if palindrome == rev: - print('yes') - else: - print('no') diff --git a/201902738/15829.py b/201902738/15829.py deleted file mode 100644 index 2227de1..0000000 --- a/201902738/15829.py +++ /dev/null @@ -1,14 +0,0 @@ -import sys - -R = 31 -M = 1234567891 - -l = int(sys.stdin.readline()) -s = list(sys.stdin.readline().strip()) - -result = 0 -for i in range(0, len(s)): - result += (ord(s[i]) - 96) * R ** i - -result %= M -print(result) diff --git a/201902738/1676.py b/201902738/1676.py deleted file mode 100644 index d5eba0b..0000000 --- a/201902738/1676.py +++ /dev/null @@ -1,17 +0,0 @@ -import sys - -N = int(sys.stdin.readline()) - -res = 1 -for i in range(1, N + 1): - res *= i - -count = 0 -reserved = list(reversed(str(res))) -for n in reserved: - if n != '0': - break - else: - count += 1 - -print(count) diff --git a/201902738/18110.py b/201902738/18110.py deleted file mode 100644 index 56e464e..0000000 --- a/201902738/18110.py +++ /dev/null @@ -1,26 +0,0 @@ -import sys - -def myRound(x): - if x - int(x) >= 0.5: - return int(x) + 1 - else: - return int(x) - - -n = int(sys.stdin.readline()) -if n == 0: - print(0) -else: - diff = [] - for _ in range(n): - diff.append(int(sys.stdin.readline())) - - diff.sort() - - p = myRound(n * 0.15) - res = 0 - for i in range(p, n - p): - res += diff[i] - res /= n - 2 * p - - print(myRound(res)) diff --git a/201902738/1978.py b/201902738/1978.py deleted file mode 100644 index 4def9ae..0000000 --- a/201902738/1978.py +++ /dev/null @@ -1,21 +0,0 @@ -import sys - -T = int(sys.stdin.readline()) -data = list(map(int, sys.stdin.readline().split())) - -res = T - -for i in range(0, T): - n = data[i] - if n > 1: - check = True - for j in range(2, n): - if n % j == 0: - check = False - break - if not check: - res -= 1 - else: - res -= 1 - -print(res) diff --git a/201902738/2751.py b/201902738/2751.py deleted file mode 100644 index 642e8af..0000000 --- a/201902738/2751.py +++ /dev/null @@ -1,8 +0,0 @@ -import sys - -N = int(sys.stdin.readline()) -data = list() -for _ in range(N): - data.append(int(sys.stdin.readline())) - -print('\n'.join(map(str, sorted(data)))) diff --git a/201902738/2798.py b/201902738/2798.py deleted file mode 100644 index b95b7b4..0000000 --- a/201902738/2798.py +++ /dev/null @@ -1,21 +0,0 @@ -import sys - -N, M = map(int, sys.stdin.readline().split()) -data = list(map(int, sys.stdin.readline().split())) -data.sort(reverse=True) - -max_val = 0 -for i in range(0, N): - for j in range(i + 1, N): - for k in range(j + 1, N): - sum = data[i] + data[j] + data[k] - if sum > M: - continue - elif sum == M: - print(M) - exit() - else: - if max_val < sum: - max_val = sum - -print(max_val) diff --git a/201902738/4153.py b/201902738/4153.py deleted file mode 100644 index 3d7e8d7..0000000 --- a/201902738/4153.py +++ /dev/null @@ -1,11 +0,0 @@ -import sys - -while True: - a, b, c = map(int, sys.stdin.readline().split()) - if (a == 0 and b == 0 and c == 0): - break - a, b, c = sorted([a, b, c]) - if a**2 + b**2 == c**2: - print('right') - else: - print('wrong') diff --git a/201902738/9012.py b/201902738/9012.py deleted file mode 100644 index 20831e7..0000000 --- a/201902738/9012.py +++ /dev/null @@ -1,25 +0,0 @@ -import sys - -T = int(sys.stdin.readline()) - -for _ in range(T): - data = list(sys.stdin.readline().strip()) - stack = [] - - if len(data) % 2 != 0 or data[0] == ')' or data[-1] == '(': - print('NO') - continue - - for d in data: - if not stack: - stack.append(d) - else: - if stack[-1] == '(' and d == ')': - stack.pop() - else: - stack.append(d) - - if len(stack) == 0: - print('YES') - else: - print('NO') diff --git a/201902769/10868.rs b/201902769/10868.rs deleted file mode 100644 index 0bfa73d..0000000 --- a/201902769/10868.rs +++ /dev/null @@ -1,51 +0,0 @@ -use std::io::{BufRead, Write}; - -fn build_tree(arr: &[i32], tree: &mut Vec, node: usize, start: usize, end: usize) { - if start == end { - tree[node] = arr[start]; - } else { - let mid = (start + end) / 2; - build_tree(arr, tree, 2 * node + 1, start, mid); - build_tree(arr, tree, 2 * node + 2, mid + 1, end); - tree[node] = tree[2 * node + 1].min(tree[2 * node + 2]); - } -} - -fn search(tree: &Vec, cur: usize, start: usize, end: usize, left: usize, right: usize) -> i32 { - if right < start || end < left { - return i32::MAX; - } - - if left <= start && end <= right { - return tree[cur]; - } - - let mid = (start + end) / 2; - let left_min = search(tree, 2*cur + 1, start, mid, left, right); - let right_min = search(tree, 2*cur + 2, mid+1, end, left, right); - - i32::min(left_min, right_min) -} - -fn main() { - let reader = std::io::BufReader::new(std::io::stdin()); - let mut writer = std::io::BufWriter::new(std::io::stdout()); - - let mut lines = reader.lines(); - let nm: Vec = lines.next().unwrap().unwrap().split_whitespace().map(|x| x.parse().unwrap()).collect(); - let (n, m) = (nm[0], nm[1]); - - let mut arr: Vec = vec![0;n]; - for i in 0..n { - let cur: i32 = lines.next().unwrap().unwrap().trim().parse().unwrap(); - arr[i] = cur; - } - - let mut tree: Vec = vec![0; n*4]; - build_tree(&arr, &mut tree, 0, 0, n-1); - for _ in 0..m { - let nodes: Vec = lines.next().unwrap().unwrap().split_whitespace().map(|x| x.parse().unwrap()).collect(); - writeln!(writer, "{}", search(&tree, 0, 0, n - 1, nodes[0] - 1, nodes[1] - 1)).unwrap(); - } - writer.flush().unwrap(); -} diff --git a/201902769/11437.rs b/201902769/11437.rs deleted file mode 100644 index 8d96e27..0000000 --- a/201902769/11437.rs +++ /dev/null @@ -1,70 +0,0 @@ -use std::io; -use std::collections::VecDeque; -fn calculate_height(edges :&Vec>, height: &mut Vec, parent: &mut Vec) { - let mut queue = VecDeque::new(); - - height[1] = 1; - queue.push_back(1); - - while !queue.is_empty() { - let cur = queue.pop_back().unwrap(); - for i in &edges[cur] { - if height[*i] == 0 { - queue.push_back(*i); - height[*i] = height[cur] + 1; - parent[*i] = cur; - } - } - } -} - -fn lca(mut a: usize, mut b: usize, height: &Vec, parent: &Vec) -> usize { - if height[a] < height[b] { - std::mem::swap(&mut a, &mut b); - } - - while height[a] != height[b] { - a = parent[a]; - } - - while a != b { - a = parent[a]; - b = parent[b]; - } - - return a; -} - -fn main() { - let mut input = String::new(); - io::stdin().read_line(&mut input).unwrap(); - - let n: usize = input.trim().parse().unwrap(); - let mut edges = vec![Vec::new();n+1]; - let mut height = vec![0;n+1]; - let mut parent = vec![0;n+1]; - - for _ in 0..n-1 { - input.clear(); - io::stdin().read_line(&mut input).unwrap(); - let edge: Vec = input - .split_whitespace() - .map(|x| x.parse().unwrap()) - .collect(); - - edges[edge[0]].push(edge[1]); - edges[edge[1]].push(edge[0]); - } - calculate_height(&mut edges,&mut height, &mut parent); - - input.clear(); - io::stdin().read_line(&mut input).unwrap(); - let m: usize = input.trim().parse().unwrap(); - for _ in 0..m { - input.clear(); - io::stdin().read_line(&mut input).unwrap(); - let nodes: Vec = input.split_whitespace().map(|x| x.parse().unwrap()).collect(); - - println!("{}", lca(nodes[0], nodes[1], &height, &parent)); - } -} diff --git a/201902769/11438.rs b/201902769/11438.rs deleted file mode 100644 index d76697f..0000000 --- a/201902769/11438.rs +++ /dev/null @@ -1,86 +0,0 @@ -use std::io::{self, Write, BufRead, BufReader, BufWriter}; -use std::collections::VecDeque; - -fn calculate_height(edges: &Vec>, n: usize) -> (Vec>, Vec) { - let mut parent: Vec> = vec![vec![1; ((n as f64).log2().ceil() as usize) + 2]; n + 1]; - let mut height: Vec = vec![0; n + 1]; - - let mut queue = VecDeque::new(); - height[1] = 1; - queue.push_back(1); - - while let Some(cur) = queue.pop_front() { - for &next in &edges[cur] { - if height[next] == 0 { - parent[next][0] = cur; - height[next] = height[cur] + 1; - queue.push_back(next); - } - } - } - - for i in 1..parent[0].len() { - for j in 1..=n { - if parent[j][i - 1] != 0 { - let temp = parent[j][i - 1]; - parent[j][i] = parent[temp][i - 1]; - } - } - } - - (parent, height) -} - -fn lca(mut a: usize, mut b: usize, parent: &Vec>, height: &Vec) -> usize { - if height[a] < height[b] { - std::mem::swap(&mut a, &mut b); - } - - let log_n = parent[0].len() - 1; - for i in (0..=log_n).rev() { - if height[a] - height[b] >= 1 << i { - a = parent[a][i]; - } - } - - if a == b { - return a; - } - - for i in (0..=log_n).rev() { - if parent[a][i] != parent[b][i] { - a = parent[a][i]; - b = parent[b][i]; - } - } - - parent[a][0] -} - - -fn main() { - let stdin = io::stdin(); - let reader = BufReader::new(stdin); - let stdout = io::stdout(); - let mut writer = BufWriter::new(stdout); - - let mut lines = reader.lines(); - let n: usize = lines.next().unwrap().unwrap().trim().parse().unwrap(); - let mut edges: Vec> = vec![Vec::new(); n + 1]; - - for line in lines.by_ref().take(n - 1) { - let edge: Vec = line.unwrap().split_whitespace().map(|x| x.parse().unwrap()).collect(); - edges[edge[0]].push(edge[1]); - edges[edge[1]].push(edge[0]); - } - - let (parent, height) = calculate_height(&edges, n); - let m: usize = lines.next().unwrap().unwrap().trim().parse().unwrap(); - - for line in lines.take(m) { - let nodes: Vec = line.unwrap().split_whitespace().map(|x| x.parse().unwrap()).collect(); - writeln!(writer, "{}", lca(nodes[0], nodes[1], &parent, &height)).unwrap(); - } - - writer.flush().unwrap(); -} diff --git a/201902769/1761.rs b/201902769/1761.rs deleted file mode 100644 index 945a884..0000000 --- a/201902769/1761.rs +++ /dev/null @@ -1,75 +0,0 @@ -use std::io; -use std::collections::VecDeque; -fn calculate_height(n : usize, edges :&Vec>, height: &mut Vec, parent: &mut Vec) -> Vec { - let mut queue = VecDeque::new(); - let mut distance = vec![0;n+1]; - height[1] = 1; - queue.push_back((1, 0)); - - while !queue.is_empty() { - let (cur, cur_distance) = queue.pop_back().unwrap(); - for (next, edge_distance) in &edges[cur] { - if height[*next] == 0 { - let next_distance = cur_distance + *edge_distance; - queue.push_back((*next, next_distance)); - distance[*next] = next_distance; - height[*next] = height[cur] + 1; - parent[*next] = cur; - } - } - } - distance -} - -fn lca(mut a: usize, mut b: usize, height: &Vec, parent: &Vec, distance : &Vec) -> i32 { - let answer = distance[a] + distance[b]; - if height[a] < height[b] { - std::mem::swap(&mut a, &mut b); - } - - while height[a] != height[b] { - a = parent[a]; - } - - while a != b { - a = parent[a]; - b = parent[b]; - } - - answer - distance[a]*2 -} - -fn main() { - let mut input = String::new(); - io::stdin().read_line(&mut input).unwrap(); - - let n: usize = input.trim().parse().unwrap(); - let mut edges = vec![Vec::new();n+1]; - let mut height = vec![0;n+1]; - let mut parent = vec![0;n+1]; - - for _ in 0..n-1 { - input.clear(); - io::stdin().read_line(&mut input).unwrap(); - let edge: Vec<&str> = input.trim().split_whitespace().collect(); - - let from = edge[0].parse::().unwrap(); - let to = edge[1].parse::().unwrap(); - let cur_distance = edge[2].parse::().unwrap(); - - edges[from].push((to, cur_distance)); - edges[to].push((from, cur_distance)); - } - let distance = calculate_height(n, &edges,&mut height, &mut parent); - - input.clear(); - io::stdin().read_line(&mut input).unwrap(); - let m: usize = input.trim().parse().unwrap(); - for _ in 0..m { - input.clear(); - io::stdin().read_line(&mut input).unwrap(); - let nodes: Vec = input.split_whitespace().map(|x| x.parse().unwrap()).collect(); - - println!("{}", lca(nodes[0], nodes[1], &height, &parent, &distance)); - } -} diff --git a/201902769/2357.rs b/201902769/2357.rs deleted file mode 100644 index f7f2abb..0000000 --- a/201902769/2357.rs +++ /dev/null @@ -1,53 +0,0 @@ -use std::io::{BufRead, Write}; - -fn init(arr: &Vec, tree: &mut Vec<(i32, i32)>, node: usize, start: usize, end: usize) { - if start == end { - tree[node] = (arr[start], arr[start]); - } - else { - let mid = (start + end) / 2; - init(arr, tree, node*2+1, start, mid); - init(arr, tree, node*2+2, mid+1, end); - tree[node] = (i32::min(tree[node*2+1].0, tree[node*2+2].0), i32::max(tree[node*2+1].1, tree[node*2+2].1)); - } -} - -fn search(tree: &mut Vec<(i32, i32)>, cur: usize, start: usize, end: usize, left: usize, right: usize) -> (i32, i32) { - if right < start || end < left { - return (i32::MAX, i32::MIN); - } - - if left <= start && end <= right { - return tree[cur]; - } - - let mid = (start + end) / 2; - let left_min = search(tree, 2*cur + 1, start, mid, left, right); - let right_min = search(tree, 2*cur + 2, mid+1, end, left, right); - - (i32::min(left_min.0, right_min.0), i32::max(left_min.1, right_min.1)) -} - -fn main() { - let reader = std::io::BufReader::new(std::io::stdin()); - let mut writer = std::io::BufWriter::new(std::io::stdout()); - - let mut lines = reader.lines(); - let nm: Vec = lines.next().unwrap().unwrap().split_whitespace().map(|x| x.parse().unwrap()).collect(); - let (n, m) = (nm[0], nm[1]); - - let mut arr: Vec = vec![0;n]; - for i in 0..n { - let cur: i32 = lines.next().unwrap().unwrap().trim().parse().unwrap(); - arr[i] = cur; - } - - let mut tree: Vec<(i32, i32)> = vec![(0, 0); n*4]; - init(&arr, &mut tree, 0, 0, n-1); - for _ in 0..m { - let nodes: Vec = lines.next().unwrap().unwrap().split_whitespace().map(|x| x.parse().unwrap()).collect(); - let answer = search(&mut tree, 0, 0, n - 1, nodes[0] - 1, nodes[1] - 1); - writeln!(writer, "{} {}",answer.0, answer.1).unwrap(); - } - writer.flush().unwrap(); -} diff --git a/201902769/2812.rs b/201902769/2812.rs deleted file mode 100644 index 7c4d4c8..0000000 --- a/201902769/2812.rs +++ /dev/null @@ -1,34 +0,0 @@ -use core::num; -use std::io::{self, Read}; - -fn main() { - let mut input = String::new(); - io::stdin().read_to_string(&mut input).unwrap(); - - let mut lines = input.lines(); - let first_line = lines.next().unwrap(); - let second_line = lines.next().unwrap(); - - let nk: Vec = first_line.split_whitespace() - .map(|x| x.parse().unwrap()) - .collect(); - let (n, mut k) = (nk[0], nk[1]); - let number: Vec = second_line.chars().collect(); - let mut stack:Vec = Vec::new(); - - for i in 0..n { - let cur = number[i].to_digit(10).unwrap(); - - if stack.last().is_some() && cur >= *stack.last().unwrap() { - while !stack.is_empty() && k > 0 && cur > *stack.last().unwrap() { - stack.pop(); - k -= 1; - } - } - stack.push(cur); - } - - for i in 0..(stack.len() - k) { - print!("{}", stack[i]); - } -} diff --git a/201902769/9466.rs b/201902769/9466.rs deleted file mode 100644 index 2c01f80..0000000 --- a/201902769/9466.rs +++ /dev/null @@ -1,58 +0,0 @@ -use std::io::{self, BufRead}; - -fn find_cycles(parent: &Vec) -> usize { - let n = parent.len(); - let mut visited = vec![false; n]; - let mut finished = vec![false; n]; - let mut count = 0; - - for i in 0..n { - let mut now = i; - let mut stack = vec![]; - - while !visited[now] { - visited[now] = true; - stack.push(now); - now = parent[now] - 1; - } - - if !finished[now] { - while let Some(top) = stack.pop() { - finished[top] = true; - count += 1; - if top == now { break; } - } - } - - for &node in &stack { - finished[node] = true; - } - } - - count -} - - -fn main() { - let stdin = io::stdin(); - let handle = stdin.lock(); - - let mut lines = handle.lines(); - - let t: i32 = lines.next().unwrap().unwrap().trim().parse().unwrap(); - - for _ in 0..t { - let n: usize = lines.next().unwrap().unwrap().trim().parse().unwrap(); - - let parent: Vec = lines - .next() - .unwrap() - .unwrap() - .trim() - .split_whitespace() - .map(|num| num.parse().unwrap()) - .collect(); - - println!("{}", n - find_cycles(&parent)); - } -} diff --git a/202004189/Q1019.java b/202004189/Q1019.java deleted file mode 100644 index d42dc0f..0000000 --- a/202004189/Q1019.java +++ /dev/null @@ -1,78 +0,0 @@ -import java.io.*; -import java.util.*; -import java.util.stream.IntStream; - -public class Q1019 { - public static void main(String[] args) throws IOException { - BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); - - // input - String originalNum = br.readLine(); - - // data init - int[] ans = new int[10]; - int currentDegreeIndex = originalNum.length()-1; - int totalNumLength = originalNum.length(); - - // logic - for(;currentDegreeIndex>=0;currentDegreeIndex--){ - int[] tempNumsArray = new int[10]; - int overNumber = getOverNumber(originalNum,currentDegreeIndex); - int degree = getDegree(totalNumLength-currentDegreeIndex); - int previousNumber = getPreviousNumber(originalNum,currentDegreeIndex); - - // f1 - tempNumsArray[0] = overNumber * degree; - - // f2 - for(int i=1;i<10;i++){ - tempNumsArray[i] = (overNumber+1) * degree; - } - - // loss - int currentNum = originalNum.charAt(currentDegreeIndex)-'0'; - - tempNumsArray[currentNum] -= (degree - previousNumber - 1); // self num loss - - for(int i=currentNum+1;i<10;i++){ - tempNumsArray[i] -= degree; - } // next num loss - - IntStream.range(0,ans.length).forEach(i->ans[i]+=tempNumsArray[i]); - } - - - // result - StringBuilder writer = new StringBuilder(); - IntStream.range(0,ans.length).forEach(i->writer.append(ans[i]).append(" ")); - - System.out.println(writer); - } - public static int getOverNumber(String numString, int untilIndex){ - if(untilIndex == 0){ - return 0; - } - - return Integer.parseInt(numString.substring(0,untilIndex)); - } - - public static int getPreviousNumber(String numString, int startIndex){ - int untilIndex= numString.length(); - - if(startIndex == untilIndex-1){ - return 0; - } - - return Integer.parseInt(numString.substring(startIndex+1,untilIndex)); - } - - public static int getDegree(int tries){ - int result = 1; - - for(int i=0;i p1Arr = predict(p1Num); - ArrayList p2Arr = predict(p2Num); - - int ans = -1; - - ArrayList smaller = p1Arr.size()smaller.add(1)); - - for(int i=0;i < smaller.size();i++){ - int p1 = p1Arr.get(i); - int p2 = p2Arr.get(i); - - if(p1 - p2 ==0){ - ans = i; - break; - } - } - - // result - System.out.println(ans); - } - - public static ArrayList predict(int num){ - ArrayList arr = new ArrayList<>(); - int pNum = num; - arr.add(pNum); - - while(pNum > 1){ - pNum = (pNum / 2) + (pNum % 2); - arr.add(pNum); - } - - return arr; - } -} \ No newline at end of file diff --git a/202004189/Q1094.java b/202004189/Q1094.java deleted file mode 100644 index 71fa3bd..0000000 --- a/202004189/Q1094.java +++ /dev/null @@ -1,32 +0,0 @@ -import java.util.*; -import java.io.*; -import java.util.stream.IntStream; - -public class Main { - public static void main(String[] args) throws IOException { - BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); - - // input - int X = Integer.parseInt(br.readLine()); - - // data init - PriorityQueue pq = new PriorityQueue<>(Integer::compareTo); - int total = 64; - pq.offer(total); - - // logic - while(!pq.isEmpty() && total > X){ - int half = pq.poll() / 2 ; - pq.offer(half); - - if((total - half) < X){ - pq.offer(half); - }else{ - total-=half; - } - } - - // result - System.out.println(pq.size()); - } -} \ No newline at end of file diff --git a/202004189/Q11003.java b/202004189/Q11003.java deleted file mode 100644 index 749acd3..0000000 --- a/202004189/Q11003.java +++ /dev/null @@ -1,62 +0,0 @@ -import java.io.*; -import java.util.*; -import java.util.stream.IntStream; - -public class Q11003 { - public static void main(String[] args) throws IOException { - BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); - - // input - StringTokenizer s=new StringTokenizer(br.readLine()," "); - StringTokenizer ss=new StringTokenizer(br.readLine()," "); - - int N = Integer.parseInt(s.nextToken()); - int L = Integer.parseInt(s.nextToken()); - - // data init - Deque dq = new LinkedList<>(); - StringBuilder writer = new StringBuilder(); - // logic - // 1 3 2 5 4 - for(int i=0;i=L){ - dq.pollFirst(); - } - if(dq.isEmpty()) { - dq.offerFirst(current); - }else if(dq.peekFirst().value > current.value){ - dq.pollFirst(); - dq.offerFirst(current); - }else if(dq.peekLast().value > current.value){ - while(!dq.isEmpty() && dq.peekLast().value >= current.value){ - dq.pollLast(); - } - dq.offerLast(current); - }else{ - dq.offerLast(current); - } - - writer.append(dq.peekFirst().value).append(" "); - } - - // output - System.out.println(writer); - } -} - -class Item{ - int idx; - int value; - - Item(int l, int v){ - idx=l; - value=v; - } - - @Override - public String toString(){ - return this.value+"("+this.idx+")"; - } -} diff --git a/202004189/Q1406.java b/202004189/Q1406.java deleted file mode 100644 index 42bea21..0000000 --- a/202004189/Q1406.java +++ /dev/null @@ -1,88 +0,0 @@ -import java.util.*; -import java.io.*; -import java.util.stream.IntStream; - -public class Main { - public static void main(String[] args) throws IOException { - BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); - - // input - String initSentence = br.readLine(); - int N= Integer.parseInt(br.readLine()); - - // data init - Editor editor = new Editor(initSentence); - - // logic - for(int i=0;i leftStk = new Stack<>(); - Stack rightStk = new Stack<>(); - - - Editor(String initSentence){ - IntStream.range(0,initSentence.length()) - .forEach(i->leftStk.push(initSentence.charAt(i))); - } - - public void left(){ - if(!leftStk.isEmpty()){ - rightStk.push(leftStk.pop()); - } - } - - public void right(){ - if(!rightStk.isEmpty()){ - leftStk.push(rightStk.pop()); - } - } - - public void delete(){ - if(!leftStk.isEmpty()){ - leftStk.pop(); - } - } - - public void append(char c){ - leftStk.push(c); - } - - public void printAll(){ - StringBuilder writer = new StringBuilder(); - while(!leftStk.isEmpty()){ - writer.append(leftStk.pop()); - } - - writer = writer.reverse(); - - while(!rightStk.isEmpty()){ - writer.append(rightStk.pop()); - } - - System.out.println(writer); - } -} \ No newline at end of file diff --git a/202004189/Q15312.java b/202004189/Q15312.java deleted file mode 100644 index d4411d6..0000000 --- a/202004189/Q15312.java +++ /dev/null @@ -1,55 +0,0 @@ -import java.util.*; -import java.io.*; -import java.util.stream.IntStream; - -public class Q15312 { - public static void main(String[] args) throws IOException { - BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); - - // input - String p1 = br.readLine(); - String p2 = br.readLine(); - - // data init - int[] num = {3, 2, 1, 2, 3, 3, 2, 3, 3, 2, 2, 1, 2, 2, 1, 2, 2, 2, 1, 2, 1, 1, 1, 2, 2, 1}; - ArrayList nums = new ArrayList<>(); - ArrayList combinedName = new ArrayList<>(); - - for(int i=0;i 2){ - ArrayList currentNums = new ArrayList<>(); - - for(int i=0;i> graph = - new ArrayList<>(); - static int[] costInfo; - - public static void main(String[] args) throws IOException { - BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); - - int vertex = Integer.parseInt(br.readLine()); - int edge = Integer.parseInt(br.readLine()); - - costInfo = new int[vertex+1]; - - for(int i=0;i<=vertex;i++){ - graph.add(new ArrayList<>()); - costInfo[i]=999999999; - } - - for(int i=0;i q = new PriorityQueue<>((o1, o2) -> o1.cost - o2.cost); - - q.offer(new Edge(start,0)); - - while(!q.isEmpty()) { - Edge currentNode = q.poll(); - - if (currentNode.cost > costInfo[currentNode.toNode]) continue; // distance보다 작다면 무시한다. - - for (int i = 0; i < graph.get(currentNode.toNode).size(); i++) { - Edge targetNode = graph.get(currentNode.toNode).get(i); - if (costInfo[targetNode.toNode] > targetNode.cost + currentNode.cost) { - // 현재 저장된 distance의 값(target까지 가는 최소비용) > target까지 가는 비용+현재 노드로 오기까지의 비용 - costInfo[targetNode.toNode] = targetNode.cost + currentNode.cost; - q.offer(new Edge(targetNode.toNode, targetNode.cost + currentNode.cost)); - } - } - } - - return costInfo[end]; - } -} - -class Edge{ - int toNode; - int cost; - - Edge(int e, int c){ - toNode=e; - cost=c; - } -} diff --git a/202004189/Q1966.java b/202004189/Q1966.java deleted file mode 100644 index 677787e..0000000 --- a/202004189/Q1966.java +++ /dev/null @@ -1,67 +0,0 @@ -import java.util.*; -import java.io.*; - -public class Q1966 { - public static void main(String[] args) throws IOException { - BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); - - int T = Integer.parseInt(br.readLine()); - StringBuilder writer =new StringBuilder(); - - for(int t=0;t q = new LinkedList<>(); - - int N=Integer.parseInt(s.nextToken()); - int targetIndex = Integer.parseInt(s.nextToken()); - int[] priority = new int[10]; - - // init - for(int i=0;iprior;i--){ - if(priority[i] > 0){ - return false; - } - } - - return true; - } -} - -class Doc{ - int idx; - int prior; - - Doc(int i, int p){ - idx=i; - prior=p; - } -} \ No newline at end of file diff --git a/202004189/Q2504.java b/202004189/Q2504.java deleted file mode 100644 index 73d6d42..0000000 --- a/202004189/Q2504.java +++ /dev/null @@ -1,66 +0,0 @@ -import java.util.*; -import java.io.*; - -public class Main { - public static void main(String[] args) throws IOException { - BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); - - // input - String inputs = br.readLine(); - - // data init - HashMap pairs = new HashMap<>(); - Stack stk = new Stack<>(); - - long ans = 0; - - pairs.put(")","("); - pairs.put("]","["); - - // logic - logic : for(int i=0;i colors = new HashSet<>(); - - while(x.hasMoreTokens()){ - colors.add(x.nextToken()); - colors.add(y.nextToken()); - } - - ArrayList arr = new ArrayList<>(colors); - Collections.sort(arr); - - StringBuilder writer = new StringBuilder(); - - for(int i=0;i dict =initDictionary(); - - BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); - - char[] context = br.readLine().toCharArray(); - int ans = 0; - - - while(ptr< context.length){ - String case1 = getLetter(ptr,context)+getLetter(ptr+1,context); - String case2 = case1+getLetter(ptr+2,context); - - if(dict.contains(case2)){ - ptr+=3; - } else if(dict.contains(case1)){ - ptr+=2; - } else{ - ptr++; - } - - if(!(case1.charAt(0)>='a' && case1.charAt(0)<='z')) continue; - - ans++; - } - - - System.out.println(ans); - } - - public static String getLetter(int ptr,char[] context){ - return ptr < context.length ? context[ptr]+"":""; - } - public static HashSet initDictionary(){ - // 사전에 등록된 크로아티아 알파벳 - HashSet dict = new HashSet<>(); - - dict.add("c-"); - dict.add("dz="); - dict.add("d-"); - dict.add("lj"); - dict.add("nj"); - dict.add("s="); - dict.add("z="); - - return dict; - } - - -} \ No newline at end of file diff --git a/202004189/Q7568.py b/202004189/Q7568.py deleted file mode 100644 index f5aee11..0000000 --- a/202004189/Q7568.py +++ /dev/null @@ -1,42 +0,0 @@ -import sys -from functools import cmp_to_key -class Pair: - def __init__(self, num: int, weight, height): - self.num = num - self.weight = weight - self.height = height - self.rank=1 - - def __str__(self): - return str(self.rank) - - def setRank(self, rank: int): - self.rank = rank - -def compare_person(me: Pair, other: Pair): - if (me.weight < other.weight) and (me.height < other.height): - return True - - return False - -def compare_person_by_num(p1: Pair, p2: Pair): - return p1.num - p2.num - -N = int(sys.stdin.readline()) - -pair_list = list() - -for i in range(N): - s = sys.stdin.readline().strip().split() - w = int(s[0]) - h = int(s[1]) - pair_list.append(Pair(i,w,h)) - -for i in range(N): - for j in range(0,N): - if compare_person(pair_list[i],pair_list[j]): - pair_list[i].rank+=1 - - -ans = " ".join(str(pair) for pair in pair_list) -print(ans) \ No newline at end of file diff --git a/202102647/12851.py b/202102647/12851.py deleted file mode 100644 index 2cc63dd..0000000 --- a/202102647/12851.py +++ /dev/null @@ -1,22 +0,0 @@ -import sys -from collections import deque -n, k = map(int,sys.stdin.readline().split()) -dist = [0] * 100001 - -def BFS(n): - result = 0 - count = 0 - que = deque([n]) - while que: - a = que.popleft() - if a == k: - result = dist[a] - count += 1 - continue - for next in (a + 1, a - 1, 2*a): - if 0<= next <= 100000 and (not dist[next] or dist[next] - dist[a] == 1): - dist[next] = dist[a] + 1 - que.append(next) - print(result) - print(count) -BFS(n) diff --git a/202102647/1325.py b/202102647/1325.py deleted file mode 100644 index 707928a..0000000 --- a/202102647/1325.py +++ /dev/null @@ -1,31 +0,0 @@ -import sys -from collections import deque -n,m = map(int,sys.stdin.readline().split()) -graph = [[] for i in range (n+1)] - -def bfs(k): - que = deque([k]) - count = 1 - visited = [0] * (n+1) - visited[k]=True - while(que): - a = que.popleft() - for next in graph[a]: - if not visited[next]: - visited[next] = 1 - que.append(next) - count+=1 - return count - -for i in range (m): - a,b =map(int,sys.stdin.readline().split()) - graph[b].append(a) - -answer = [] -for i in range (1,n+1): - answer.append(bfs(i)) -maxValue = max(answer) -for i in range (len(answer)): - if maxValue == answer[i]: - print(i+1, end= ' ') - diff --git a/202102647/13549.py b/202102647/13549.py deleted file mode 100644 index b93c6f6..0000000 --- a/202102647/13549.py +++ /dev/null @@ -1,23 +0,0 @@ -import sys -from collections import deque -n,k= map(int,sys.stdin.readline().split()) -graph = [-1] * 100001 - -def bfs(n): - graph[n]= 0 - que = deque([n]) - while que: - a = que.popleft() - if a==k: - print(graph[a]) - return - for next in (a-1,a+1,2*a): - if 0<=next<100001 and graph[next] == -1: - if next == 2*a: - graph[next] = graph[a] - que.appendleft(next) - else: - graph[next] = graph[a] + 1 - que.append(next) - -bfs(n) \ No newline at end of file diff --git a/202102647/13913.py b/202102647/13913.py deleted file mode 100644 index 4329f70..0000000 --- a/202102647/13913.py +++ /dev/null @@ -1,30 +0,0 @@ -import sys -from collections import deque -n, k = map(int, sys.stdin.readline().split()) -graph = [0] * 100001 -arr = [0] * 100001 -def count(x): - data = [] - temp = x - for _ in range(graph[x]+1): - data.append(temp) - temp = arr[temp] - print(' '.join(map(str, data[::-1]))) -def bfs(n): - que = deque([n]) - while(que): - # print(que) - a = que.popleft() - if a == k: - # print(que) - print(graph[a]) - count(a) - break - for next in (a - 1, a+1, 2*a): - if 0<=next<100001 and not graph[next]: - graph[next] = graph[a]+1 - que.append(next) - arr[next] = a - - -bfs(n) \ No newline at end of file diff --git a/202102647/14940.py b/202102647/14940.py deleted file mode 100644 index 3410353..0000000 --- a/202102647/14940.py +++ /dev/null @@ -1,36 +0,0 @@ -import sys -from collections import deque -n,m = map(int, sys.stdin.readline().split()) -graph = [list(map(int, sys.stdin.readline().split())) for _ in range (n)] - -visited = [[-1] * m for _ in range (n)] -dx = [0,0,1,-1] #아래 위 오 왼 -dy = [1,-1,0,0] -def bfs(a, b): - que = deque([(a,b)]) - visited[a][b] = 0 - while que: - x_,y_ = que.popleft() - for i in range (4): - x = dx[i] + x_ - y = dy[i] + y_ - if 0 <= x < n and 0 <= y < m: - if visited[x][y] == -1: - if graph[x][y] == 0: - visited[x][y] = 0 - elif graph[x][y] == 1: - visited[x][y] = visited[x_][y_] + 1 - que.append((x,y)) -for i in range (n): - for j in range(m): - if graph[i][j] == 2 and visited[i][j] == -1: - bfs(i,j) -for i in range(n): - for j in range(m): - if graph[i][j] == 0: - print(0, end = " ") - else: - print(visited[i][j],end =" ") - print() - - diff --git a/202102647/1697.py b/202102647/1697.py deleted file mode 100644 index 3f8623c..0000000 --- a/202102647/1697.py +++ /dev/null @@ -1,19 +0,0 @@ -import sys -from collections import deque -n, k = map(int,sys.stdin.readline().split()) - -result = [0] * 100001 - -def BFS(n): - que = deque([n]) - while que: - a = que.popleft() - if a == k : - print(result[a]) - break - for next in (a-1, a+1, 2*a): - if 0<=next<100001 and not result[next]: - result[next] = result[a] + 1 - que.append(next) - -BFS(n) \ No newline at end of file diff --git a/202102647/1912.py b/202102647/1912.py deleted file mode 100644 index 259a23c..0000000 --- a/202102647/1912.py +++ /dev/null @@ -1,13 +0,0 @@ -import math -import sys -a = int(sys.stdin.readline()) -arr = list(map(int, sys.stdin.readline().split())) - -dp = [0 for i in range (a)] -dp[0] = arr[0] -maxValue = dp[0] -for i in range (1,a): - dp[i] = max(dp[i-1]+arr[i],arr[i]) - maxValue = max(dp[i], maxValue) -print(maxValue) - diff --git a/202102647/4358.py b/202102647/4358.py deleted file mode 100644 index 5ff58e6..0000000 --- a/202102647/4358.py +++ /dev/null @@ -1,18 +0,0 @@ -import sys -dict1 = dict() -total = 0 -while(True): - - a = sys.stdin.readline().rstrip() - if a =='': - break - total+=1 - if a in dict1: - dict1[a] += 1 - else: - dict1[a] = 1 -dic = dict(sorted(dict1.items())) -for i in (dic): - key = dic[i] - percent = (key/total*100) - print("%s %.4f" %(i,percent)) \ No newline at end of file diff --git a/202102649/1011-AlphaCentauri.py b/202102649/1011-AlphaCentauri.py deleted file mode 100644 index 4e173cf..0000000 --- a/202102649/1011-AlphaCentauri.py +++ /dev/null @@ -1,18 +0,0 @@ -T = int(input()) - -for i in range(T): - x, y = map(int, input().split()) - - d = y - x - - n = 0 - - while True: - if d <= n * (n + 1): - break - n += 1 - - if d <= n ** 2: - print(n * 2 - 1) - else: - print(n * 2) diff --git "a/202102649/1038-\352\260\220\354\206\214\355\225\230\353\212\224\354\210\230.py" "b/202102649/1038-\352\260\220\354\206\214\355\225\230\353\212\224\354\210\230.py" deleted file mode 100644 index e69de29..0000000 diff --git a/202102649/11729-Hanoi.py b/202102649/11729-Hanoi.py deleted file mode 100644 index e69de29..0000000 diff --git "a/202102649/1238-\355\214\214\355\213\260.py" "b/202102649/1238-\355\214\214\355\213\260.py" deleted file mode 100644 index efc735d..0000000 --- "a/202102649/1238-\355\214\214\355\213\260.py" +++ /dev/null @@ -1,32 +0,0 @@ -import heapq - -def dijkstra(s): - D = [float('inf')] * (N + 1) - D[s] = 0 - q = [] - heapq.heappush(q, (0, s)) - while q: - dist, now = heapq.heappop(q) - if D[now] >= dist: - for v, val in city[now]: - if dist + val < D[v]: - D[v] = dist + val - heapq.heappush(q, (dist + val, v)) - return D - -N, M, X = map(int, input().split()) - -city = [[] for _ in range(N + 1)] - -for _ in range(M): - a, b, t = map(int, input().split()) - city[a].append([b, t]) - -ans = dijkstra(X) -ans[0] = 0 -for i in range(1, N + 1): - if i != X: - res = dijkstra(i) - ans[i] += res[X] - -print(max(ans)) \ No newline at end of file diff --git "a/202102649/13904-\352\263\274\354\240\234.py" "b/202102649/13904-\352\263\274\354\240\234.py" deleted file mode 100644 index 61bb7ad..0000000 --- "a/202102649/13904-\352\263\274\354\240\234.py" +++ /dev/null @@ -1,25 +0,0 @@ -import sys - -N = int(sys.stdin.readline()) - -hw = [] -visit = [False] * 1001 - -for _ in range(N): - d, w = map(int, sys.stdin.readline().split()) - hw.append((d, w)) - -hw.sort(key = lambda x: x[1], reverse=True) -answer = 0 - -for day, worth in hw: - i = day - while i > 0 and visit[i]: - i -= 1 - if i == 0: - continue - else: - visit[i] = True - answer += worth - -print(answer) \ No newline at end of file diff --git "a/202102649/1484-\353\213\244\354\235\264\354\226\264\355\212\270.py" "b/202102649/1484-\353\213\244\354\235\264\354\226\264\355\212\270.py" deleted file mode 100644 index e69de29..0000000 diff --git "a/202102649/14888-\354\227\260\354\202\260\354\236\220\353\201\274\354\233\214\353\204\243\352\270\260.py" "b/202102649/14888-\354\227\260\354\202\260\354\236\220\353\201\274\354\233\214\353\204\243\352\270\260.py" deleted file mode 100644 index c068f5a..0000000 --- "a/202102649/14888-\354\227\260\354\202\260\354\236\220\353\201\274\354\233\214\353\204\243\352\270\260.py" +++ /dev/null @@ -1,42 +0,0 @@ -import sys - -n = int(sys.stdin.readline()) -data = list(map(int, sys.stdin.readline().split())) - -add, sub, mul, div = map(int, sys.stdin.readline().split()) - - -max_value = -1e9 -min_value = 1e9 - -def dfs(i, arr): - global add, sub, mul, div, max_value, min_value - - if i == n: - max_value = max(max_value, arr) - min_value = min(min_value, arr) - else: - if add > 0: - add -= 1 - dfs(i + 1, arr + data[i]) - add += 1 - - if sub > 0: - sub -= 1 - dfs(i + 1, arr - data[i]) - sub += 1 - - if mul > 0: - mul -= 1 - dfs(i + 1, arr * data[i]) - mul += 1 - - if div > 0: - div -= 1 - dfs(i + 1, int(arr / data[i])) - div += 1 - -dfs(1, data[0]) - -print(max_value) -print(min_value) diff --git "a/202102649/1629-\352\263\261\354\205\210.py" "b/202102649/1629-\352\263\261\354\205\210.py" deleted file mode 100644 index e69de29..0000000 diff --git "a/202102649/1744-\354\210\230\353\254\266\352\270\260.py" "b/202102649/1744-\354\210\230\353\254\266\352\270\260.py" deleted file mode 100644 index 79a3695..0000000 --- "a/202102649/1744-\354\210\230\353\254\266\352\270\260.py" +++ /dev/null @@ -1,34 +0,0 @@ -n = int(input()) -pos = [] -min = [] - -for _ in range(n): - num = int(input()) - if num > 0: - pos.append(num) - else: - min.append(num) - -pos.sort(reverse = True) -min.sort() - -ans = 0 -for i in range(1,len(pos),2): - if pos[i - 1] + pos[i] < pos[i-1] * pos[i]: - ans += (pos[i - 1] * pos[i]) - else: - ans += (pos[i - 1] + pos[i]) - -if len(pos) % 2 != 0: - ans += pos[-1] - -for j in range(1, len(min), 2): - if min[j - 1] + min[j] < min[j - 1] * min[j]: - ans += (min[j - 1] * min[j]) - else: - ans += (min[j - 1] + min[j]) - -if len(min) % 2 != 0: - ans += min[-1] - -print(ans) \ No newline at end of file diff --git "a/202102649/1806-\353\266\200\353\266\204\355\225\251.py" "b/202102649/1806-\353\266\200\353\266\204\355\225\251.py" deleted file mode 100644 index 4c9bced..0000000 --- "a/202102649/1806-\353\266\200\353\266\204\355\225\251.py" +++ /dev/null @@ -1,24 +0,0 @@ -import sys - -N, S = map(int, input().split()) -nums = list(map(int, input().split())) - -left, right = 0, 0 -sum = 0 -min_ = sys.maxsize - -while True: - if sum >= S: - min_ = min(min_, right-left) - sum -= nums[left] - left +=1 - elif right == N: - break - else: - sum += nums[right] - right += 1 - -if min_ == sys.maxsize: - print(0) -else: - print(min_) \ No newline at end of file diff --git "a/202102649/1931-\355\232\214\354\235\230\354\213\244\353\260\260\354\240\225.py" "b/202102649/1931-\355\232\214\354\235\230\354\213\244\353\260\260\354\240\225.py" deleted file mode 100644 index e69de29..0000000 diff --git "a/202102649/1932-\354\240\225\354\210\230\354\202\274\352\260\201\355\230\225.py" "b/202102649/1932-\354\240\225\354\210\230\354\202\274\352\260\201\355\230\225.py" deleted file mode 100644 index e69de29..0000000 diff --git "a/202102649/1946-\354\213\240\354\236\205\354\202\254\354\233\220.py" "b/202102649/1946-\354\213\240\354\236\205\354\202\254\354\233\220.py" deleted file mode 100644 index 253e1ee..0000000 --- "a/202102649/1946-\354\213\240\354\236\205\354\202\254\354\233\220.py" +++ /dev/null @@ -1,23 +0,0 @@ -import sys - -input = sys.stdin.readline - -T = int(input()) - -for _ in range(T): - N = int(input()) - rank = [] - for _ in range(N): - ability = list(map(int, input().split())) - rank.append(ability) - - rank_asc = sorted(rank) - top = 0 - result = 1 - - for i in range(1, len(rank_asc)): - if rank_asc[i][1] < rank_asc[top][1]: - top = i - result += 1 - - print(result) diff --git "a/202102649/9935-\353\254\270\354\236\220\354\227\264\355\217\255\353\260\234.py" "b/202102649/9935-\353\254\270\354\236\220\354\227\264\355\217\255\353\260\234.py" deleted file mode 100644 index e69de29..0000000 diff --git "a/202102680/10026_\354\235\264\354\227\260\354\243\274.py" "b/202102680/10026_\354\235\264\354\227\260\354\243\274.py" deleted file mode 100644 index b8da19c..0000000 --- "a/202102680/10026_\354\235\264\354\227\260\354\243\274.py" +++ /dev/null @@ -1,69 +0,0 @@ -import sys -from collections import deque -input = sys.stdin.readline -n = int(input()) - -array = [list(input().rstrip()) for _ in range(n)] # 그림 입력 받기 -dx = [0, 0, -1, 1] -dy = [-1, 1, 0, 0] - -def bfs_first(a,b, color): - dq = deque() - dq.append([a,b]) - visited[a][b] = True # 방문한 곳 체크 - - while dq: - i,j = dq.pop() - - for k in range(4): - x = i + dx[k] - y = j + dy[k] - - if x < 0 or x >= n or y < 0 or y >= n or visited[x][y]: - continue - - if color == array[x][y]: - visited[x][y] = True - dq.append([x,y]) - return -def bfs_second(a,b,color): - dq = deque() - dq.append([a,b]) - - visited[a][b] = True - while dq: - i,j = dq.pop() - for k in range(4): - x = i + dx[k] - y = j + dy[k] - - if x < 0 or x >= n or y < 0 or y >= n or visited[x][y]: - continue - - if color != 'B' and array[x][y] != 'B': - visited[x][y] = True - dq.append([x, y]) - elif color == 'B' and array[x][y] == 'B': - visited[x][y] = True - dq.append([x, y]) - return - - -visited = [[False]*n for _ in range(n)] -count = 0 -for i in range(n): - for j in range(n): - if not visited[i][j]: - bfs_first(i,j,array[i][j]) - count += 1 - -print(count, end=' ') -visited = [[False]*n for _ in range(n)] -count = 0 -for i in range(n): - for j in range(n): - if not visited[i][j]: - bfs_second(i,j,array[i][j]) - count += 1 - -print(count) \ No newline at end of file diff --git "a/202102680/1074_\354\235\264\354\227\260\354\243\274.py" "b/202102680/1074_\354\235\264\354\227\260\354\243\274.py" deleted file mode 100644 index c54bbaa..0000000 --- "a/202102680/1074_\354\235\264\354\227\260\354\243\274.py" +++ /dev/null @@ -1,29 +0,0 @@ -import sys - -input = sys.stdin.readline -N, r, c = map(int, input().split()) -ans = 0 -while N != 0: - N -= 1 - - # 제 1사분면 - if r < 2 ** N and c < 2 ** N: - ans += (2 ** N) * (2 ** N) * 0 - - # 제 2사분면 - elif r < 2 ** N and c >= 2 ** N: - ans += (2 ** N) * (2 ** N) * 1 - c -= (2 ** N) - - # 제 3사분면 - elif r >= 2 ** N and c < 2 ** N: - ans += (2 ** N) * (2 ** N) * 2 - r -= (2 ** N) - - # 제 4사분면 - else: - ans += (2 ** N) * (2 ** N) * 3 - r -= (2 ** N) - c -= (2 ** N) - -print(ans) \ No newline at end of file diff --git "a/202102680/1157_\354\235\264\354\227\260\354\243\274.py" "b/202102680/1157_\354\235\264\354\227\260\354\243\274.py" deleted file mode 100644 index 8b815c8..0000000 --- "a/202102680/1157_\354\235\264\354\227\260\354\243\274.py" +++ /dev/null @@ -1,17 +0,0 @@ -import sys -input = sys.stdin.readline - -word = input().rstrip() -count = [0] * 26 - -for w in word: - cal = ord(w)-65 - if cal > 25: - count[cal-32] += 1 - else: - count[cal] += 1 - -if count.count(max(count)) > 1: - print("?") -else: - print(chr(count.index(max(count))+65)) \ No newline at end of file diff --git "a/202102680/1158_\354\235\264\354\227\260\354\243\274.py" "b/202102680/1158_\354\235\264\354\227\260\354\243\274.py" deleted file mode 100644 index 6834d4c..0000000 --- "a/202102680/1158_\354\235\264\354\227\260\354\243\274.py" +++ /dev/null @@ -1,17 +0,0 @@ -import sys - -input = sys.stdin.readline - -n, k = map(int, input().split()) -arr = [i for i in range(1, n+1)] - -ans = [] # 정답 저장 -idx = 0 # 제거 대상 인덱스 -for i in range(n): - idx += k-1 - if idx >= len(arr): # 인덱스가 범위를 벗어나면 - idx = idx % len(arr) - - ans.append(str(arr.pop(idx))) - -print("<", ", ".join(ans), ">", sep="") \ No newline at end of file diff --git "a/202102680/14940_\354\235\264\354\227\260\354\243\274.py" "b/202102680/14940_\354\235\264\354\227\260\354\243\274.py" deleted file mode 100644 index b182496..0000000 --- "a/202102680/14940_\354\235\264\354\227\260\354\243\274.py" +++ /dev/null @@ -1,41 +0,0 @@ -import sys -from collections import deque -input = sys.stdin.readline -n, m = map(int,input().split()) -arr = [list(map(int, input().split())) for _ in range(n)] -visited = [[-1]*m for _ in range(n)] - -dx = [0,0,-1,1] -dy = [-1,1,0,0] - -def bfs(i, j): - queue = deque() - queue.append((i, j)) - - visited[i][j] = 0 - - while queue: - x, y = queue.popleft() - - for i in range(4): - nx, ny = dx[i] + x, dy[i] + y - - if 0 <= nx < n and 0 <= ny < m and visited[nx][ny] == -1: # 아직 방문 안 했으면 - if arr[nx][ny] == 0: # 막혀 있는 땅 - visited[nx][ny] = 0 - elif arr[nx][ny] == 1: # 갈 수 있는 땅 - visited[nx][ny] = visited[x][y] + 1 - queue.append((nx, ny)) # 큐에 넣어줌으로써 다음 경로 탐색 - -for i in range(n): - for j in range(m): - if arr[i][j] == 2 and visited[i][j] == -1: # 시작지점 발견 - bfs(i, j) # 탐색 시작 - -for i in range(n): - for j in range(m): - if arr[i][j] == 0: - print(0, end=" ") - else: - print(visited[i][j], end=" ") - print() \ No newline at end of file diff --git "a/202102680/15649_\354\235\264\354\227\260\354\243\274.py" "b/202102680/15649_\354\235\264\354\227\260\354\243\274.py" deleted file mode 100644 index 350762c..0000000 --- "a/202102680/15649_\354\235\264\354\227\260\354\243\274.py" +++ /dev/null @@ -1,21 +0,0 @@ -import sys - -input = sys.stdin.readline - -n, m = map(int, input().split()) -visited = [False] * (n+1) -ans = [] -def DFS(): - if len(ans) == m: - print(" ".join(map(str, ans))) - for i in range(1, n+1): - if visited[i]: - continue - visited[i] = True - ans.append(i) - DFS() - ans.pop() - visited[i] = False - -DFS() - diff --git "a/202102680/1912_\354\235\264\354\227\260\354\243\274.py" "b/202102680/1912_\354\235\264\354\227\260\354\243\274.py" deleted file mode 100644 index b2e3eb6..0000000 --- "a/202102680/1912_\354\235\264\354\227\260\354\243\274.py" +++ /dev/null @@ -1,15 +0,0 @@ -import sys -input = sys.stdin.readline - -n = int(input()) -arr = list(map(int,input().split())) - -dp = [0] * n -dp[0] = arr[0] -ans = max(-sys.maxsize,dp[0]) -for i in range(1, n): - dp[i] = max(arr[i], dp[i-1]+arr[i]) - if ans < dp[i]: - ans = dp[i] - -print(ans) \ No newline at end of file diff --git "a/202102680/2447_\354\235\264\354\227\260\354\243\274.py" "b/202102680/2447_\354\235\264\354\227\260\354\243\274.py" deleted file mode 100644 index 2601662..0000000 --- "a/202102680/2447_\354\235\264\354\227\260\354\243\274.py" +++ /dev/null @@ -1,22 +0,0 @@ -import sys -input = sys.stdin.readline - -N = int(input()) - -def stars(n): - if n == 1: - return ['*'] - - starlist = stars(n//3) - arr = [] - - for star in starlist: - arr.append(star*3) - for star in starlist: - arr.append(star+' '*(n//3)+star) - for star in starlist: - arr.append(star*3) - - return arr - -print('\n'.join(stars(N))) \ No newline at end of file diff --git "a/202102680/2470_\354\235\264\354\227\260\354\243\274.py" "b/202102680/2470_\354\235\264\354\227\260\354\243\274.py" deleted file mode 100644 index a082a1b..0000000 --- "a/202102680/2470_\354\235\264\354\227\260\354\243\274.py" +++ /dev/null @@ -1,23 +0,0 @@ -import sys -input = sys.stdin.readline - -n = int(input()) -arr = list(map(int,input().split())) - -arr.sort() -start, end = 0, n-1 -check = sys.maxsize - -while start < end: - cal = arr[start] + arr[end] - if abs(cal) < check: - check = abs(cal) - ans = [arr[start], arr[end]] - if cal < 0: - start += 1 - elif cal > 0: - end -= 1 - else: - break - -print(ans[0],ans[1]) diff --git "a/202102680/4948_\354\235\264\354\227\260\354\243\274.py" "b/202102680/4948_\354\235\264\354\227\260\354\243\274.py" deleted file mode 100644 index 4279df0..0000000 --- "a/202102680/4948_\354\235\264\354\227\260\354\243\274.py" +++ /dev/null @@ -1,20 +0,0 @@ -import sys -input = sys.stdin.readline -num = 246913 # 123456 * 2 + 1 -arr = [0] * 2 + [1] * 246912 - -for i in range(2, num): - if arr[i]: - for j in range(i*2, num,i): - arr[j] = 0 - -while(1): - n = int(input()) - if n == 0: - break - - ans_num = 0 - for i in range(n+1,2*n+1): - ans_num += arr[i] - - print(ans_num) diff --git "a/202102680/5430_\354\235\264\354\227\260\354\243\274.py" "b/202102680/5430_\354\235\264\354\227\260\354\243\274.py" deleted file mode 100644 index 298d0ad..0000000 --- "a/202102680/5430_\354\235\264\354\227\260\354\243\274.py" +++ /dev/null @@ -1,35 +0,0 @@ -import sys -from collections import deque -input = sys.stdin.readline - -T = int(input()) - -for _ in range(T): - p = input() # 수행할 함수 p - p = p[0:-1] # 입력 맨 뒤 \n 제거 - n = int(input()) # 배열에 들어 있는 수 n - arr = input() # - dq = deque(arr[1:-2].split(",")) - check = 1 # deque 출력 할 지 말 지 - count = 0 # R의 개수 - if n == 0: # 배열 안에 아무 것도 없다고 하면? arr - dq = deque() - for i in p: # 함수 하나씩 읽기 - if i == "R": # R이면? count +=1 - count += 1 - elif i == "D": # D이면? - if len(dq) == 0: # 지울 게 없을 때 error 출력 - print("error") - check = 0 # deque 출력 안해도 됨. error 출력 하니까 - break - if count % 2 == 0: - dq.popleft() - else: - dq.pop() - - if check != 0: - if count % 2 == 0: - print("["+",".join(dq)+"]") - else: - dq.reverse() - print("["+",".join(dq)+"]") diff --git "a/202102680/7662_\354\235\264\354\227\260\354\243\274.py" "b/202102680/7662_\354\235\264\354\227\260\354\243\274.py" deleted file mode 100644 index 20fe783..0000000 --- "a/202102680/7662_\354\235\264\354\227\260\354\243\274.py" +++ /dev/null @@ -1,41 +0,0 @@ -import sys -import heapq -input = sys.stdin.readline - -T = int(input()) -for _ in range(T): - k = int(input()) - visited = [True for _ in range(k)] - minQ, maxQ = [], [] # 최소, 최대 힙 따로 생성 - - for i in range(k): - char, n = input().rstrip().split(" ") # D or I , n - n = int(n) - - if char == "I": - heapq.heappush(maxQ, (-n, i)) - heapq.heappush(minQ, (n, i)) - elif char == "D": - if n == 1: - while maxQ and not visited[maxQ[0][1]]: - heapq.heappop(maxQ) - if maxQ: - visited[maxQ[0][1]] = False - heapq.heappop(maxQ) - else: - while minQ and not visited[minQ[0][1]]: - heapq.heappop(minQ) - if minQ: - visited[minQ[0][1]] = False - heapq.heappop(minQ) - - # 동기화 - while minQ and not visited[minQ[0][1]]: - heapq.heappop(minQ) - while maxQ and not visited[maxQ[0][1]]: - heapq.heappop(maxQ) - if maxQ and minQ: - print(-maxQ[0][0], minQ[0][0]) - else: - print("EMPTY") - diff --git a/202102690/B1011.py b/202102690/B1011.py deleted file mode 100644 index 321efab..0000000 --- a/202102690/B1011.py +++ /dev/null @@ -1,21 +0,0 @@ -n = int(input()) -testcases = [list(map(int, input().split())) for _ in range(n)] -result = [] - -for tc in testcases: - count = 0 - x, y = tc - d = y - x - - while True : - if d <= count*(count+1) : - break - count += 1 - - if d <= count**2 : - result.append(count*2-1) - else : - result.append(count*2) - -for i in result : - print(i) \ No newline at end of file diff --git a/202102690/B1012.py b/202102690/B1012.py deleted file mode 100644 index f4f3630..0000000 --- a/202102690/B1012.py +++ /dev/null @@ -1,39 +0,0 @@ -dx = [-1, 1, 0, 0] -dy = [0, 0, -1, 1] - -def BFS(x, y) : - q = [(x, y)] - matrix[x][y] = 0 - - while q : - x, y = q.pop(0) - for i in range(4) : - nx = x + dx[i] - ny = y + dy[i] - - if nx < 0 or nx >= n or ny < 0 or ny >= m : - continue - if matrix[nx][ny] == 1 : - matrix[nx][ny] = 0 - q.append((nx, ny)) - return - -tc = int(input()) -result = [] - -for _ in range(tc) : - count = 0 - m, n, k = map(int, input().split()) - matrix = [[0] * m for _ in range(n)] - for _ in range(k) : - tmp_x, tmp_y = map(int, input().split()) - matrix[tmp_y][tmp_x] = 1 - for a in range(n) : - for b in range(m) : - if matrix[a][b] == 1 : - BFS(a, b) - count += 1 - result.append(count) - -for i in result : - print(i) \ No newline at end of file diff --git a/202102690/B1058.py b/202102690/B1058.py deleted file mode 100644 index a804c0e..0000000 --- a/202102690/B1058.py +++ /dev/null @@ -1,33 +0,0 @@ -import copy - -n = int(input()) -friends = [[0]*n for _ in range(n)] - -for i in range(n) : - tmp = input() - for j in range(n) : - if tmp[j] == 'Y' : - friends[i][j] = 1 - -twofriends = [[] for _ in range(n)] - -for i in range(n) : - cur = [] - for j in range(n) : - if friends[j][i] == 1 : - twofriends[i].append(j) - twofriends[j].append(i) - cur.append(j) - if len(cur) >= 2 : - for k in cur : - tmp_cur = copy.deepcopy(cur) - tmp_cur.remove(k) - twofriends[k].extend(tmp_cur) - for j in range(n) : - twofriends[j] = list(set(twofriends[j])) -result = 0 -for i in range(n) : - if result < len(twofriends[i]) : - result = len(twofriends[i]) - -print(result) \ No newline at end of file diff --git a/202102690/B1068.py b/202102690/B1068.py deleted file mode 100644 index 7c5753b..0000000 --- a/202102690/B1068.py +++ /dev/null @@ -1,17 +0,0 @@ -n = int(input()) -graph = list(map(int, input().split())) -d = int(input()) - -def DFS(node): - graph[node] = -100 - for i in range(n): - if node == graph[i]: - DFS(i) - -DFS(d) -count = 0 -for i in range(n): - if (graph[i] != -100) and (i not in graph): - count += 1 - -print(count) \ No newline at end of file diff --git a/202102690/B1080.py b/202102690/B1080.py deleted file mode 100644 index 876a655..0000000 --- a/202102690/B1080.py +++ /dev/null @@ -1,23 +0,0 @@ -n, m = map(int, input().split()) -matrix_a = [list(map(int, list(input()))) for _ in range(n)] -matrix_b = [list(map(int, list(input()))) for _ in range(n)] - -def change(a, b) : - for i in range(a, a+3) : - for j in range(b, b+3) : - matrix_a[i][j] = 1 - matrix_a[i][j] - -if (n < 3 or m < 3) and (matrix_a != matrix_b) : - print("-1") -else : - result = 0 - for i in range(n-2): - for j in range(m-2): - if matrix_a[i][j] != matrix_b[i][j]: - result += 1 - change(i, j) - - if matrix_a == matrix_b : - print(result) - else : - print("-1") \ No newline at end of file diff --git a/202102690/B1105.py b/202102690/B1105.py deleted file mode 100644 index ac3844a..0000000 --- a/202102690/B1105.py +++ /dev/null @@ -1,14 +0,0 @@ -a_str, b_str = map(str, input().split()) - -result = 0 - -if len(a_str) != len(b_str) : - print(0) -else : - for i in range(len(a_str)) : - if a_str[i] == b_str[i] : - if a_str[i] == '8' : - result += 1 - else: - break - print(result) \ No newline at end of file diff --git a/202102690/B1106.py b/202102690/B1106.py deleted file mode 100644 index ea61472..0000000 --- a/202102690/B1106.py +++ /dev/null @@ -1,10 +0,0 @@ -C, N = map(int, input().split()) -cost_list = [list(map(int, input().split())) for _ in range(N)] -graph = [1e7 for _ in range(C+100)] -graph[0] = 0 - -for cost, people in cost_list: - for i in range(people, C+100): - graph[i] = min(graph[i-people] + cost,graph[i]) - -print(min(graph[C:])) \ No newline at end of file diff --git a/202102690/B1124.py b/202102690/B1124.py deleted file mode 100644 index fba3129..0000000 --- a/202102690/B1124.py +++ /dev/null @@ -1,50 +0,0 @@ -import math - -def find_primes(n) : - length = 0 - for i in range(2, int(n**(1/2))+1): - while n % i == 0: - length += 1 - n //= i - if n != 1: - length += 1 - return length - # results = [] - # i = 2 - - # while i <= n : - # if n == 1 : - # break - # if n % i == 0 : - # results.append(i) - # n /= i - # else : - # i += 1 - - # return results - -def is_prime(n) : - for i in range(2, int(n**(1/2))+1) : - if n % i == 0 : - return False - return True - -a, b = map(int, input().split()) -result = 0 - -# is_prime = [True for i in range(b + 1)] - -# is_prime[1] = False -# for i in range(2, b + 1): -# if not is_prime[i]: -# continue - -# for j in range(i * i, b + 1, i): -# is_prime[j] = False - -for i in range(a, b+1) : - count = find_primes(i) - if count != 1 and is_prime(count) : - result += 1 - -print(result) \ No newline at end of file diff --git a/202102690/B1149.py b/202102690/B1149.py deleted file mode 100644 index d7ff89f..0000000 --- a/202102690/B1149.py +++ /dev/null @@ -1,9 +0,0 @@ -n = int(input()) -cost = [list(map(int, input().split())) for _ in range(n)] - -for i in range(1, n) : - cost[i][0] = min(cost[i-1][1], cost[i-1][2]) + cost[i][0] - cost[i][1] = min(cost[i-1][0], cost[i-1][2]) + cost[i][1] - cost[i][2] = min(cost[i-1][0], cost[i-1][1]) + cost[i][2] - -print(min(cost[n-1])) \ No newline at end of file diff --git a/202102690/B1283.py b/202102690/B1283.py deleted file mode 100644 index 247a6d4..0000000 --- a/202102690/B1283.py +++ /dev/null @@ -1,38 +0,0 @@ -n = int(input()) -options = [input() for _ in range(n)] -result = [] -used = [" "] - -for i in range(n) : - cur_result = "" - cur_words = options[i].split(' ') - complete = False - for j in range(len(cur_words)) : - if cur_words[j][0] not in used : - cur_result += '['+cur_words[j][0]+']'+cur_words[j][1:] - for k in range(j+1, len(cur_words)) : - cur_result += " " + cur_words[k] - used.append(cur_words[j][0].upper()) - used.append(cur_words[j][0].lower()) - complete = True - break - else : - cur_result += cur_words[j] + " " - - if complete == True : - result.append(cur_result) - continue - - cur_result = "" - for j in range(len(options[i])) : - if options[i][j] not in used : - cur_result += '['+options[i][j]+']'+options[i][j+1:] - used.append(options[i][j].upper()) - used.append(options[i][j].lower()) - break - else : - cur_result += options[i][j] - result.append(cur_result) - -for i in result : - print(i) \ No newline at end of file diff --git a/202102690/B1309.py b/202102690/B1309.py deleted file mode 100644 index e06aa90..0000000 --- a/202102690/B1309.py +++ /dev/null @@ -1,18 +0,0 @@ -n = int(input()) - -cur_left = 1 -cur_right = 1 -cur_no = 1 -next_left = 0 -next_right = 0 -next_no = 0 -for i in range(2, n+1) : - next_left = cur_no + cur_right - next_right = cur_no + cur_left - next_no = cur_no + cur_left + cur_right - cur_left = next_left - cur_right = next_right - cur_no = next_no - -result = cur_right + cur_left + cur_no -print(result%9901) \ No newline at end of file diff --git a/202102690/B1360.py b/202102690/B1360.py deleted file mode 100644 index 8a57588..0000000 --- a/202102690/B1360.py +++ /dev/null @@ -1,27 +0,0 @@ -n = int(input()) -queue = [] -now = '' - -for _ in range(n): - flag = False - command, char, num = map(str, input().split()) - - if command == 'type': - now += char - queue.append((int(num), now)) - else: - char, num = int(char), int(num) - - for i in range(len(queue)-1, -1, -1): - if queue[i][0] >= num - char : - continue - flag = True - now = queue[i][1] - queue.append((num, now)) - break - - if not flag: - now = '' - queue.append((num, now)) - -print(queue[-1][1]) \ No newline at end of file diff --git a/202102690/B1446.py b/202102690/B1446.py deleted file mode 100644 index 1c0872d..0000000 --- a/202102690/B1446.py +++ /dev/null @@ -1,11 +0,0 @@ -n, d = map(int, input().rstrip().split(' ')) -graph = [list(map(int, input().rstrip().split(' '))) for _ in range(n)] -distance = [i for i in range(d+1)] - -for i in range(d+1) : - distance[i] = min(distance[i], distance[i-1] + 1) - for s, e, dist in graph: - if i == s and e <= d and distance[i] + dist < distance[e] : - distance[e] = distance[s] + dist - -print(distance[d]) \ No newline at end of file diff --git a/202102690/B2149.py b/202102690/B2149.py deleted file mode 100644 index ef652ef..0000000 --- a/202102690/B2149.py +++ /dev/null @@ -1,24 +0,0 @@ -key = list(input()) -secret = input() - -n = len(key) -table_n = len(secret)//n -table = [[] for _ in range(table_n)] - -for i in range(len(secret)) : - table[i%table_n].append(secret[i]) - -result = [[0]*n for _ in range(len(table))] -key_sort = sorted(key) - -for i, k in enumerate(key) : - real_index = key_sort.index(k) - key_sort[real_index] = '*' - for j in range(len(table)) : - result[j][i] = table[j][real_index] - -answer = "" -for i in range(len(result)) : - for j in range(n) : - answer += result[i][j] -print(answer) diff --git a/202102721/10026.py b/202102721/10026.py deleted file mode 100644 index 04e4429..0000000 --- a/202102721/10026.py +++ /dev/null @@ -1,45 +0,0 @@ -from collections import deque - -def BFS(x,y): - q.append((x,y)) - dx = [-1,0,1,0] - dy = [0,1,0,-1] - visited[x][y] = 1 - while q: - x, y = q.popleft() - for d in range(4): - nx = x + dx[d] - ny = y + dy[d] - if 0<=nx dist[node]: - continue - - for nxt, n_cost in graph[node]: - c = cost + n_cost - if c < dist[nxt]: - dist[nxt] = c - heapq.heappush(pq, (c, nxt)) - - print(dist[e]) - -N = int(input()) -M = int(input()) -graph = [[] for _ in range(N+1)] -for _ in range(M): - x, y, cost = map(int, input().split()) - graph[x].append([y, cost]) -start, end = map(int, input().split()) - -dijikstra(graph, N, start, end) \ No newline at end of file diff --git a/202102721/2468.py b/202102721/2468.py deleted file mode 100644 index 7f407f2..0000000 --- a/202102721/2468.py +++ /dev/null @@ -1,43 +0,0 @@ -from collections import deque - -n = int(input()) -graph = [] -max = 0 - -for i in range(n): - graph.append(list(map(int, input().split()))) - for j in range(n): - if graph[i][j] > max: - max = graph[i][j] - -def bfs(a, b, value, visited): - q = deque() - dx = [0 ,0, 1, -1] - dy = [1, -1, 0 ,0] - q.append((a, b)) - visited[a][b] = 1 - while q: - x, y = q.popleft() - for i in range(4): - nx = x + dx[i] - ny = y + dy[i] - if 0 <= nx < n and 0 <= ny < n: - if graph[nx][ny] > value and visited[nx][ny] == 0: - visited[nx][ny] = 1 - q.append((nx, ny)) - -result = 0 -for i in range(max): - visited = [[0] * n for i in range(n)] - cnt = 0 - - for j in range(n): - for k in range(n): - if graph[j][k] > i and visited[j][k] == 0: - bfs(j, k, i, visited) - cnt += 1 - - if result < cnt: - result = cnt - -print(result) \ No newline at end of file diff --git a/202102721/2667.py b/202102721/2667.py deleted file mode 100644 index dae22aa..0000000 --- a/202102721/2667.py +++ /dev/null @@ -1,46 +0,0 @@ -import sys -from collections import deque - -input = sys.stdin.readline - -N = int(input()) - -graph = [] -result = [] - -for _ in range(N): - graph.append(list(map(int, input().rstrip()))) - -def bfs(graph, a, b): - queue = deque() - dx = [0, 0, 1, -1] - dy = [1, -1, 0, 0] - queue.append([a, b]) - graph[a][b] = 0 - count = 1 - - while queue: - x, y = queue.popleft() - graph[x][y] = 0 - for i in range(4): - nx = x + dx[i] - ny = y + dy[i] - if nx < 0 or nx >= len(graph) or ny < 0 or ny >= len(graph): - continue - if graph[nx][ny] == 1: - graph[nx][ny] = 0 - queue.append([nx, ny]) - count += 1 - return count - -for i in range(N): - for j in range(N): - if graph[i][j] == 1: - count = bfs(graph, i, j) - result.append(count) - -result.sort() - -print(len(result)) -for k in result: - print(k) \ No newline at end of file diff --git a/202102721/7569.py b/202102721/7569.py deleted file mode 100644 index 60796d3..0000000 --- a/202102721/7569.py +++ /dev/null @@ -1,38 +0,0 @@ -import sys -from collections import deque -m,n,h = map(int,input().split()) # mn크기, h상자수 -graph = [] -queue = deque([]) - -for i in range(h): - tmp = [] - for j in range(n): - tmp.append(list(map(int,sys.stdin.readline().split()))) - for k in range(m): - if tmp[j][k]==1: - queue.append([i,j,k]) - graph.append(tmp) - -dx = [-1,1,0,0,0,0] -dy = [0,0,1,-1,0,0] -dz = [0,0,0,0,1,-1] -while(queue): - x,y,z = queue.popleft() - - for i in range(6): - a = x+dx[i] - b = y+dy[i] - c = z+dz[i] - if 0<=a1000000000: - cost = 1000000001 - if flag: - if dic[key] == -1: - dic[key] = cost - else: - dic[key] = min(dic[key],cost) - - -print(dic["LOVE"]) - - diff --git "a/202302534/1056_\352\271\200\354\212\271\355\230\204.py" "b/202302534/1056_\352\271\200\354\212\271\355\230\204.py" deleted file mode 100644 index efbb3b8..0000000 --- "a/202302534/1056_\352\271\200\354\212\271\355\230\204.py" +++ /dev/null @@ -1,42 +0,0 @@ -import sys -input = sys.stdin.readline -sys.setrecursionlimit(10000) - -def power(a,b): - tmp = 1 - while b > 0: - if b % 2 == 1: - tmp = (tmp * a) - a = (a * a) - b = b // 2 - return tmp - -def bs(x,n): - low,high =0, 1e9 - while low <= high: - mid = (low + high)//2 - val = power(mid,x) - if val >= n: - high = mid -1 - else: - low = mid + 1 - return int(low) - -def update(n): - if n in dic: - return dic[n] - else: - dic[n] = n-1 - - for x in range(1,62): - m = bs(x, n) # n보다 같거나 큰 m^x - if m>=n: - continue - - dic[n] = min(dic[n], update(m)+abs(power(m,x)-n)+1,update(m-1)+abs(power(m-1, x)-n)+1) - - return dic[n] - -dic = {1:0} -n = int(input()) -print(update(n)) diff --git "a/202302534/1115_\352\271\200\354\212\271\355\230\204.py" "b/202302534/1115_\352\271\200\354\212\271\355\230\204.py" deleted file mode 100644 index 4f3dfff..0000000 --- "a/202302534/1115_\352\271\200\354\212\271\355\230\204.py" +++ /dev/null @@ -1,26 +0,0 @@ -import sys -input = sys.stdin.readline - -n = int(input()) -p = list(map(int, input().split())) -check = [False for _ in range(n)] -ans = 0 - -cnt, cur = 0, 0 -while cnt < n: - for i in range(n): - if not check[i]: - cur = i - break - - while not check[cur]: - check[cur] = True - cur = p[cur] - cnt += 1 - #print(cur) - # print(check) - ans += 1 -if ans <= 1: - print(0) -else: - print(ans) diff --git "a/202302534/1511_\352\271\200\354\212\271\355\230\204.py" "b/202302534/1511_\352\271\200\354\212\271\355\230\204.py" deleted file mode 100644 index 3e1b876..0000000 --- "a/202302534/1511_\352\271\200\354\212\271\355\230\204.py" +++ /dev/null @@ -1,43 +0,0 @@ -import sys -input = sys.stdin.readline - -a= list(map(int, input().split())) -ans = [0] -S = sum(a) -k=True -while S>0 and k: - #print(S,a) - k=False - if max(a) <= S-max(a): - for i in range(9,-1,-1): - if a[i]: # 카드가 존재하고 - if ans[-1] != i: # 인접하지 않을 때 - ans.append(i) - a[i] -= 1 - S -= 1 - k = True - break - else: - for i in range(9,-1,-1): - if a[i] == max(a) and ans[-1]!=i: - ans.append(i) - a[i] -= 1 - S -= 1 - k = True - break - if k: - continue - else: - for i in range(9,-1,-1): - if ans[-1] != i and a[i]>0: - ans.append(i) - a[i] -= 1 - S -= 1 - k = True - break - -if len(ans)==1: - print(0) -else: - for i in range(1,len(ans)): - print(ans[i], end="") \ No newline at end of file diff --git "a/202302534/1922_\352\271\200\354\212\271\355\230\204.py" "b/202302534/1922_\352\271\200\354\212\271\355\230\204.py" deleted file mode 100644 index f0ce36d..0000000 --- "a/202302534/1922_\352\271\200\354\212\271\355\230\204.py" +++ /dev/null @@ -1,32 +0,0 @@ -import heapq -import sys -input = sys.stdin.readline -def prim(n, G): - used = [False for _ in range(n)] - pq = [(0, 0)] - total_weight = 0 - count = 0 - while pq: - weight, node = heapq.heappop(pq) - if used[node]: - continue - used[node] = True - total_weight += weight - count += 1 - for (neigh_weight, neigh_node) in G[node]: - if not used[neigh_node]: - heapq.heappush(pq, (neigh_weight, neigh_node)) - return total_weight if count == n else -1 - -n = int(input()) -m = int(input()) -G = [[] for _ in range(n)] -for _ in range(m): - a, b, c = map(int, input().split()) # a,b 사이에 가중치 c인 간선 존재 - a -= 1 - b -= 1 - G[a].append((c, b)) - G[b].append((c, a)) - -ans = prim(n, G) -print(ans) diff --git "a/202302534/19585_\352\271\200\354\212\271\355\230\204.py" "b/202302534/19585_\352\271\200\354\212\271\355\230\204.py" deleted file mode 100644 index 630fd60..0000000 --- "a/202302534/19585_\352\271\200\354\212\271\355\230\204.py" +++ /dev/null @@ -1,75 +0,0 @@ -import sys -input = sys.stdin.readline - -class Node(object): - def __init__(self, data): - self.data = data - self.count = 0 - self.child = {} - self.check = False - -class Trie(object): - def __init__(self): - self.head = Node(None) - - def insert(self, string): - cur = self.head - cur.count += 1 - l=len(string) - for i in range(l): - c = string[i] - if c not in cur.child: - cur.child[c] = Node(c) - cur = cur.child[c] - cur.count += 1 - if i == l-1: - cur.check = True - - - def search(self, string): - cur = self.head - S = set() - cnt = 0 - - for c in string: - cnt += 1 - if c in cur.child: - cur = cur.child[c] - if cur.check: - S.add(cnt) - else: - return S - - if cur.data: - return S - else: - return S - - -trie = Trie() -n, m = map(int, input().split()) -tmp = [] -S =set() -for _ in range(n): - A = input().rstrip() - tmp.append(A) - -for _ in range(m): - B = input().rstrip() - S.add(B) -for _ in tmp: # color - trie.insert(_) - -k=int(input()) -for _ in range(k): - ss = input().rstrip() - L =len(ss) - S1 =trie.search(ss) - flag = True - for i in S1: - if ss[i:] in S: - print("Yes") - flag =False - break - if flag: - print("No") diff --git "a/202302534/2166_\352\271\200\354\212\271\355\230\204.py" "b/202302534/2166_\352\271\200\354\212\271\355\230\204.py" deleted file mode 100644 index 91d966a..0000000 --- "a/202302534/2166_\352\271\200\354\212\271\355\230\204.py" +++ /dev/null @@ -1,25 +0,0 @@ -import sys -input = sys.stdin.readline -# 신발끈공식 -# 딱히 좌표들의 정렬이 필요하진 않는다. 외적이용 -def Shoelace_formula(n,x, y): - area = 0.0 - - for i in range(n): - j = (i + 1) % n - area += x[i] * y[j] - y[i] * x[j] - - area = abs(area) / 2.0 - - return area - -n = int(input()) -x = [] -y= [] -for _ in range(n): - a,b = map(int,input().split()) - x.append(a) - y.append(b) - -ans = Shoelace_formula(n,x, y) -print(ans) diff --git "a/202302534/2208_\352\271\200\354\212\271\355\230\204.py" "b/202302534/2208_\352\271\200\354\212\271\355\230\204.py" deleted file mode 100644 index a51e1a0..0000000 --- "a/202302534/2208_\352\271\200\354\212\271\355\230\204.py" +++ /dev/null @@ -1,27 +0,0 @@ -import sys -input =sys.stdin.readline - -n, m = map(int,input().split()) -arr = [int(input()) for _ in range(n)] -prefix = [0]*(n+1) -min_ = [0] * (n+1) -max_ = [0] * (n+1) -for i in range(n): - prefix[i+1] = prefix[i]+arr[i] -min_[1] = prefix[1] -max_[n] = prefix[n] -for i in range(2,n+1): - min_[i] = min(min_[i-1],prefix[i]) -for i in range(n-1,0,-1): - max_[i] = max(max_[i + 1], prefix[i]) -#print(prefix) -#print(min_) -#print(max_) -min_[0] = 0 -max_[0] = 0 - -ans = [0]*(n+1) -for i in range(m,n+1): - ans[i]=max_[i]-min_[i-m] - -print(max(ans)) \ No newline at end of file diff --git "a/202302534/2447_\352\271\200\354\212\271\355\230\204.py" "b/202302534/2447_\352\271\200\354\212\271\355\230\204.py" deleted file mode 100644 index d3236d9..0000000 --- "a/202302534/2447_\352\271\200\354\212\271\355\230\204.py" +++ /dev/null @@ -1,24 +0,0 @@ -import sys -input = sys.stdin.readline - - -def star(n): - if n == 1: - return "*" - - arr = star(n//3) - tmp = [] - # 정사각형 모양 - for i in arr: - tmp.append(i*3) - for i in arr: - tmp.append(i+' '*(n//3)+i) # 3분의 1 - for i in arr: - tmp.append(i*3) - - return tmp - -n = int(input()) -#a,b = "***", "* *" -for i in star(n): - print(i) \ No newline at end of file diff --git a/202402686/1000.py b/202402686/1000.py deleted file mode 100644 index 4b69e4d..0000000 --- a/202402686/1000.py +++ /dev/null @@ -1,2 +0,0 @@ -a, b = map(int,input().split()) -print(a+b) \ No newline at end of file diff --git a/202402686/10039.java b/202402686/10039.java deleted file mode 100644 index 15e5e57..0000000 --- a/202402686/10039.java +++ /dev/null @@ -1,27 +0,0 @@ -import java.util.Scanner; - -public class Main { - - public static void main(String[] args) { - // TODO Auto-generated method stub - Scanner sc = new Scanner(System.in); - - int s1 =sc.nextInt(); - int s2 =sc.nextInt(); - int s3 =sc.nextInt(); - int s4 =sc.nextInt(); - int s5 =sc.nextInt(); - - if (s1<40) s1 = 40; - if (s2<40) s2 = 40; - if (s3<40) s3 = 40; - if (s4<40) s4 = 40; - if (s5<40) s5 = 40; - - int ev = s1+s2+s3+s4+s5; - - System.out.println(ev/5); - - - } -} diff --git a/202402686/1085.java b/202402686/1085.java deleted file mode 100644 index e69de29..0000000 diff --git a/202402686/10950.java b/202402686/10950.java deleted file mode 100644 index 19e4ded..0000000 --- a/202402686/10950.java +++ /dev/null @@ -1,18 +0,0 @@ -import java.util.Scanner; - -public class Main { - - public static void main(String[] args) { - // TODO Auto-generated method stub - - Scanner sc = new Scanner(System.in); - int T =sc.nextInt(); - for(int i=0; i 반복 - } - System.out.print(sum); //총합 출력 - sc.close(); - } - -} \ No newline at end of file diff --git a/202402686/1330.java b/202402686/1330.java deleted file mode 100644 index 9c27ae2..0000000 --- a/202402686/1330.java +++ /dev/null @@ -1,23 +0,0 @@ -package SPG; -import java.util.Scanner; -public class Main { - - public static void main(String[] args) { - // TODO Auto-generated method stub - - Scanner sc = new Scanner(System.in); - int A=sc.nextInt(); - int B=sc.nextInt(); - - if(A>B){ - System.out.println(">");} - - else if(A=i; k--) {System.out.print('*');}; - System.out.println(); - } - - - } -} diff --git a/202402686/2480.java b/202402686/2480.java deleted file mode 100644 index b1581cc..0000000 --- a/202402686/2480.java +++ /dev/null @@ -1,28 +0,0 @@ -import java.util.Scanner; - -public class Main { - - public static void main(String[] args) { - // TODO Auto-generated method stub - Scanner sc = new Scanner(System.in); - int r1 =sc.nextInt(); - int r2 =sc.nextInt(); - int r3 =sc.nextInt(); - - if(r1==r2&&r2==r3) { - System.out.println(10000+r1*1000); - } - else if((r1==r2||r1==r3) && r2 != r3) { - System.out.println(1000+r1*100); - } - else if(r2==r3&&r1!=r2) { - System.out.println(1000+r2*100); - } - else if (r2!=r1&&r2!=r3) { - int max = r1; - if(maxB){ - System.out.print(">"); - }else if(Amax) { - max = array[i]; - count = i+1; - - } - } - System.out.println(max); - System.out.println(count); - } - -} \ No newline at end of file diff --git a/202402715/2739.java b/202402715/2739.java deleted file mode 100644 index 81362f5..0000000 --- a/202402715/2739.java +++ /dev/null @@ -1,10 +0,0 @@ -import java.util.Scanner; -public class Main{ - public static void main(String[] args){ - Scanner sc = new Scanner(System.in); - int n = sc.nextInt(); - for (int i = 1; i<10; i++) { - System.out.printf("%d * %d = %d\n", n, i, n*i); - } - } -} \ No newline at end of file diff --git a/202402715/2741.java b/202402715/2741.java deleted file mode 100644 index b5583a5..0000000 --- a/202402715/2741.java +++ /dev/null @@ -1,10 +0,0 @@ -import java.util.Scanner; -public class Main{ - public static void main(String[] args){ - Scanner sc = new Scanner(System.in); - int n = sc.nextInt(); - for (int i = 1; i<=n; i++) { - System.out.println(i); - } - } -} \ No newline at end of file diff --git a/202402715/2753.java b/202402715/2753.java deleted file mode 100644 index 9158563..0000000 --- a/202402715/2753.java +++ /dev/null @@ -1,12 +0,0 @@ -import java.util.Scanner; -public class Main{ - public static void main(String[] args){ - Scanner sc = new Scanner(System.in); - int year = sc.nextInt(); - if((year % 4 == 0 && year % 100 != 0) || (year % 4 == 0 && year % 400 == 0)) { - System.out.print("1"); - }else { - System.out.print("0"); - } - } -} \ No newline at end of file diff --git a/202402715/27866.java b/202402715/27866.java deleted file mode 100644 index f24dad1..0000000 --- a/202402715/27866.java +++ /dev/null @@ -1,10 +0,0 @@ -import java.util.Scanner; -public class Main { - public static void main(String[] args) { - Scanner sc = new Scanner(System.in); - String line = sc.nextLine(); - int i = sc.nextInt(); - char k = line.charAt(i-1); - System.out.print(k); - } -} diff --git a/202402715/9498.java b/202402715/9498.java deleted file mode 100644 index 1bc5b43..0000000 --- a/202402715/9498.java +++ /dev/null @@ -1,24 +0,0 @@ -import java.util.Scanner; -public class Main{ - public static void main(String[] args){ - Scanner sc = new Scanner(System.in); - int score = sc.nextInt(); - switch(score/10) { - case 10: case 9: - System.out.print("A"); - break; - case 8: - System.out.print("B"); - break; - case 7: - System.out.print("C"); - break; - case 6: - System.out.print("D"); - break; - default: - System.out.print("F"); - - } - } -} \ No newline at end of file diff --git a/202402715/auto_interpace.py b/202402715/auto_interpace.py deleted file mode 100644 index 7bec56b..0000000 --- a/202402715/auto_interpace.py +++ /dev/null @@ -1,56 +0,0 @@ -import tkinter as tk -from tkinter import simpledialog, messagebox, font as tkfont -import subprocess -import os - -def execute_git_commands(problem_number, problem_name): - try: - # 경로 설정 - path = r"C:\Users\becky\OneDrive\문서\GitHub\2024-Hamgorithm-Spring\202402715" # 저장할 경로를 입력해주세요! - os.chdir(path) - - # git bash 경로 - git_bash_path = "C:/Program Files/Git/git-bash.exe" - - # 파일 이름 설정 - file_name = problem_number + ".java" - - # git 명령어 실행 - subprocess.check_call([git_bash_path, "-c", "git switch 202402686"]) - subprocess.check_call([git_bash_path, "-c", f"git add {file_name}"]) - subprocess.check_call([git_bash_path, "-c", f"git commit -m \"{problem_number}번 - {problem_name}\""]) - subprocess.check_call([git_bash_path, "-c", "git push"]) - messagebox.showinfo("성공", "Git 명령어가 성공적으로 실행되었습니다.") - except Exception as e: - messagebox.showerror("오류", f"오류가 발생했습니다: {e}") - -def on_submit(): - problem_number = problem_number_entry.get() - problem_name = problem_name_entry.get() - execute_git_commands(problem_number, problem_name) - -# GUI 설정 -root = tk.Tk() -root.title("Git push해줄게") - -# 폰트 설정 -label_font = tkfont.Font(size=14) -entry_font = tkfont.Font(size=12) -button_font = tkfont.Font(size=12) - -# 위젯 크기 조정 -tk.Label(root, text="문제 번호:", font=label_font).pack(pady=10) -problem_number_entry = tk.Entry(root, font=entry_font) -problem_number_entry.pack(pady=5, padx=10, ipadx=50, ipady=4) - -tk.Label(root, text="문제 이름:", font=label_font).pack(pady=10) -problem_name_entry = tk.Entry(root, font=entry_font) -problem_name_entry.pack(pady=5, padx=10, ipadx=50, ipady=4) - -submit_button = tk.Button(root, text="제출", command=on_submit, font=button_font) -submit_button.pack(pady=10, ipadx=10, ipady=5) - -# 창 크기 설정 -root.geometry('400x200') - -root.mainloop() diff --git a/202402720/1018.go b/202402720/1018.go new file mode 100644 index 0000000..cb86b9c --- /dev/null +++ b/202402720/1018.go @@ -0,0 +1,86 @@ +package main + +import ( + "fmt" + "strings" +) + +var ( + tile [][]string + + firstWTile = [][]string{ + {"W", "B", "W", "B", "W", "B", "W", "B"}, + {"B", "W", "B", "W", "B", "W", "B", "W"}, + {"W", "B", "W", "B", "W", "B", "W", "B"}, + {"B", "W", "B", "W", "B", "W", "B", "W"}, + {"W", "B", "W", "B", "W", "B", "W", "B"}, + {"B", "W", "B", "W", "B", "W", "B", "W"}, + {"W", "B", "W", "B", "W", "B", "W", "B"}, + {"B", "W", "B", "W", "B", "W", "B", "W"}, + } + + firstBTile = [][]string{ + {"B", "W", "B", "W", "B", "W", "B", "W"}, + {"W", "B", "W", "B", "W", "B", "W", "B"}, + {"B", "W", "B", "W", "B", "W", "B", "W"}, + {"W", "B", "W", "B", "W", "B", "W", "B"}, + {"B", "W", "B", "W", "B", "W", "B", "W"}, + {"W", "B", "W", "B", "W", "B", "W", "B"}, + {"B", "W", "B", "W", "B", "W", "B", "W"}, + {"W", "B", "W", "B", "W", "B", "W", "B"}, + } +) + +func getRemaningCount(x int, y int) int { + var firstCount int + var secondCount int + + for i := x; i < x+8; i++ { + for j := y; j < y+8; j++ { + if tile[i][j] != firstWTile[i-x][j-y] { + firstCount++ + } + if tile[i][j] != firstBTile[i-x][j-y] { + secondCount++ + } + } + } + + if firstCount < secondCount { + return firstCount + } else { + return secondCount + } +} + +func main() { + var N, M int + fmt.Scan(&N, &M) + + tile = make([][]string, N) + for i := range tile { + tile[i] = make([]string, M) + } + + for i := 0; i < N; i++ { + var input string + fmt.Scan(&input) + + for j, v := range strings.Split(input, "") { + tile[i][j] = v + } + } + + min := 1 << 31 + + for i := 0; i <= N-8; i++ { + for j := 0; j <= M-8; j++ { + v := getRemaningCount(i, j) + if v < min { + min = v + } + } + } + + fmt.Println(min) +} diff --git a/202402720/10798.go b/202402720/10798.go new file mode 100644 index 0000000..4922eee --- /dev/null +++ b/202402720/10798.go @@ -0,0 +1,25 @@ +package main + +import ( + "fmt" + "strings" +) + +func main() { + var n [5][15]string + + for i := 0; i < 5; i++ { + var input string + fmt.Scanf("%s", &input) + + for j, c := range strings.Split(input, "") { + n[i][j] = c + } + } + + for i := 0; i < 15; i++ { + for j := 0; j < 5; j++ { + fmt.Print(n[j][i]) + } + } +} diff --git a/202402720/10809.go b/202402720/10809.go new file mode 100644 index 0000000..f02be35 --- /dev/null +++ b/202402720/10809.go @@ -0,0 +1,27 @@ +package main + +import ( + "fmt" + "strings" +) + +func main() { + var alphabet [26]int + for i := 0; i < 26; i++ { + alphabet[i] = -1 + } + + var S string + fmt.Scanf("%s", &S) + + for i, v := range strings.Split(S, "") { + asciiArray := int(v[0]) - 97 + if alphabet[asciiArray] == -1 { + alphabet[asciiArray] = i + } + } + + for i := 0; i < 26; i++ { + fmt.Printf("%d ", alphabet[i]) + } +} diff --git a/202402720/14235.cc b/202402720/14235.cc new file mode 100644 index 0000000..f05a444 --- /dev/null +++ b/202402720/14235.cc @@ -0,0 +1,38 @@ +#include + +using namespace std; + +int main() { + int n; + priority_queue pq; + + cin >> n; + + vector result; + + for (int i = 0; i < n; i++) { + int a; + cin >> a; + + if (a == 0) { + if (pq.size() == 0) { + result.push_back(-1); + } else { + result.push_back(pq.top()); + pq.pop(); + } + } else { + int a2; + + for (int j = 0; j < a; j++) { + cin >> a2; + pq.push(a2); + } + } + } + + for (int i = 0; i < result.size(); i++) { + cout << result[i] << endl; + } + return 0; +} \ No newline at end of file diff --git a/202402720/1436.go b/202402720/1436.go new file mode 100644 index 0000000..cdf99a6 --- /dev/null +++ b/202402720/1436.go @@ -0,0 +1,33 @@ +package main + +import ( + "fmt" + "strings" +) + +func available(value int) bool { + str := fmt.Sprintf("%d", value) + + return strings.Contains(str, "666") +} + +func main() { + var N int + fmt.Scan(&N) + + count := 1 + value := 666 + + for { + if available(value) { + if count == N { + break + } else { + count++ + } + } + value++ + } + + fmt.Println(value) +} diff --git a/202402720/14425.cc b/202402720/14425.cc new file mode 100644 index 0000000..249a8bb --- /dev/null +++ b/202402720/14425.cc @@ -0,0 +1,28 @@ +#include + +using namespace std; + +int main() { + int N, M; + cin >> N >> M; + + set nSet; + + string s1; + + int sum = 0; + + for (int i = 0; i < N; i++) { + cin >> s1; + nSet.insert(s1); + } + + for (int i = 0; i < M; i++) { + cin >> s1; + sum += nSet.count(s1); + } + + cout << sum << endl; + + return 0; +} \ No newline at end of file diff --git a/202402720/1966.cc b/202402720/1966.cc new file mode 100644 index 0000000..421e8e8 --- /dev/null +++ b/202402720/1966.cc @@ -0,0 +1,62 @@ +#include + +using namespace std; + +int main() { + int caseNum; + + cin >> caseNum; + + vector result; + + for (int i = 0; i < caseNum; i++) { + int N, M; + queue q; + vector v; + + cin >> N >> M; + + for (int j = 0; j < N; j++) { + int x; + cin >> x; + q.push(x); + v.push_back(x); + } + + sort(v.begin(), v.end()); + + int currentIndex = M; + int count = 1; + + while (true) { + int x = q.front(); + if (x == v.back()) { + if (currentIndex == 0) { + break; + } else { + count += 1; + q.pop(); + v.pop_back(); + currentIndex -= 1; + } + } else { + q.pop(); + q.push(x); + + if (currentIndex == 0) { + currentIndex = q.size() - 1; + } else { + currentIndex -= 1; + } + } + } + + result.push_back(count); + } + + for (int i = 0; i < result.size(); i++) { + cout << result[i] << endl; + } + + return 0; +} \ No newline at end of file diff --git a/202402720/2444.cc b/202402720/2444.cc new file mode 100644 index 0000000..8333788 --- /dev/null +++ b/202402720/2444.cc @@ -0,0 +1,37 @@ +#include + +using namespace std; + +int main() { + int N; + cin >> N; + + int M = N * 2 - 1; + + for (int i = 0; i < M / 2; i++) { + for (int j = 0; j < (M / 2) - i; j++) { + cout << " "; + } + for (int j = 0; j < (i + 1) * 2 - 1; j++) { + cout << "*"; + } + cout << endl; + } + + for (int i = 0; i < M; i++) { + cout << "*"; + } + cout << endl; + + for (int i = 0; i < M / 2; i++) { + for (int j = 0; j < i + 1; j++) { + cout << " "; + } + for (int j = 0; j < M - ((i + 1) * 2); j++) { + cout << "*"; + } + cout << endl; + } + + return 0; +} \ No newline at end of file diff --git a/202402720/25206.go b/202402720/25206.go new file mode 100644 index 0000000..a9df3be --- /dev/null +++ b/202402720/25206.go @@ -0,0 +1,39 @@ +package main + +import ( + "fmt" +) + +var ( + gradeMap = map[string]float32{ + "A+": 4.5, + "A0": 4.0, + "B+": 3.5, + "B0": 3.0, + "C+": 2.5, + "C0": 2.0, + "D+": 1.5, + "D0": 1.0, + "F": 0.0, + } +) + +func main() { + var totalCredit float32 + var totalScore float32 + + for i := 0; i < 20; i++ { + var input string + var credit float32 + var grade string + + fmt.Scanf("%s %f %s", &input, &credit, &grade) + + if grade != "P" { + totalCredit += float32(credit) + totalScore += float32(credit) * gradeMap[grade] + } + } + + fmt.Printf("%.6f\n", totalScore/totalCredit) +} diff --git a/202402720/2563.go b/202402720/2563.go new file mode 100644 index 0000000..57babdd --- /dev/null +++ b/202402720/2563.go @@ -0,0 +1,37 @@ +package main + +import "fmt" + +func main() { + var N int + fmt.Scanf("%d", &N) + + var tile [100][100]int + + for i := 0; i < 100; i++ { + for j := 0; j < 100; j++ { + tile[i][j] = 0 + } + } + + for i := 0; i < N; i++ { + var x, y int + fmt.Scanf("%d %d", &x, &y) + for j := x; j < x+10; j++ { + for k := y; k < y+10; k++ { + tile[j][k] = 1 + } + } + } + + var count int + for i := 0; i < 100; i++ { + for j := 0; j < 100; j++ { + if tile[i][j] == 1 { + count++ + } + } + } + + fmt.Println(count) +} diff --git a/202402720/2581.cc b/202402720/2581.cc new file mode 100644 index 0000000..7a0efcb --- /dev/null +++ b/202402720/2581.cc @@ -0,0 +1,49 @@ +#include + +using namespace std; + +bool isPrime(int num) { + if (num == 1) { + return false; + } + + double r = sqrt(num); + int d = (int)r; + + bool prime = true; + + for (int i = 2; i <= d; i++) { + if (num % i == 0) { + prime = false; + } + } + + return prime; +} + +int main() { + int M, N; + int sum = 0; + int min = 10000; + + cin >> M; + cin >> N; + + for (int i = M; i <= N; i++) { + if (isPrime(i)) { + if (min > i) { + min = i; + } + sum += i; + } + } + + if (sum == 0) { + cout << "-1" << endl; + } else { + cout << sum << endl; + cout << min << endl; + } + + return 0; +} \ No newline at end of file diff --git a/202402720/2606.cc b/202402720/2606.cc new file mode 100644 index 0000000..7c3bb93 --- /dev/null +++ b/202402720/2606.cc @@ -0,0 +1,47 @@ +#include + +using namespace std; + +vector visited; + +void dfs(vector> &v, int here) { + visited[here] = 1; + + for (int next : v[here]) { + if (visited[next] == 0) { + dfs(v, next); + } + } +} + +int main() { + int n; + cin >> n; + int m; + cin >> m; + + vector> v(n + 1); + visited.resize(n + 1, 0); + + while (m > 0) { + int a, b; + cin >> a >> b; + v[a].push_back(b); + v[b].push_back(a); + m--; + } + + dfs(v, 1); + + int cnt = 0; + + for (int i = 1; i <= n; i++) { + if (visited[i] == 1) { + cnt += 1; + } + } + + cout << cnt - 1 << "\n"; + + return 0; +} \ No newline at end of file diff --git a/202402720/2739.go b/202402720/2739.go new file mode 100644 index 0000000..5b79173 --- /dev/null +++ b/202402720/2739.go @@ -0,0 +1,12 @@ +package main + +import "fmt" + +func main() { + var N int + fmt.Scanf("%d", &N) + + for i := 1; i <= 9; i++ { + fmt.Printf("%d * %d = %d\n", N, i, N*i) + } +} diff --git a/202402720/2751.go b/202402720/2751.go new file mode 100644 index 0000000..4f1825f --- /dev/null +++ b/202402720/2751.go @@ -0,0 +1,31 @@ +package main + +import ( + "bufio" + "fmt" + "os" + "sort" +) + +var reader *bufio.Reader = bufio.NewReader(os.Stdin) +var writer *bufio.Writer = bufio.NewWriter(os.Stdout) +var scanner *bufio.Scanner = bufio.NewScanner(os.Stdin) + +func main() { + defer writer.Flush() + + var N int + fmt.Fscanln(reader, &N) + + arr := make([]int, N) + + for i := 0; i < N; i++ { + fmt.Fscanln(reader, &arr[i]) + } + + sort.Ints(arr) + + for i := 0; i < N; i++ { + fmt.Fprintln(writer, arr[i]) + } +} diff --git a/202402720/28066.cc b/202402720/28066.cc new file mode 100644 index 0000000..dcc6094 --- /dev/null +++ b/202402720/28066.cc @@ -0,0 +1,45 @@ +#include + +using namespace std; + +int main() { + int N, K; + cin >> N >> K; + + queue q; + + for (int i = 1; i <= N; i++) { + q.push(i); + } + + while (true) { + + if (q.size() < K) { + if (q.size() == 1) { + break; + } else { + int x = q.front(); + q.pop(); + q.push(x); + + int y = q.size() - 1; + + for (int i = 0; i < y; i++) { + q.pop(); + } + break; + } + } else { + int x = q.front(); + q.pop(); + q.push(x); + + for (int i = 0; i < K - 1; i++) { + q.pop(); + } + } + } + + cout << q.front() << endl; + return 0; +} \ No newline at end of file diff --git a/202402720/28278.go b/202402720/28278.go new file mode 100644 index 0000000..b23e2b1 --- /dev/null +++ b/202402720/28278.go @@ -0,0 +1,57 @@ +package main + +import ( + "bufio" + "fmt" + "os" + "strconv" + "strings" +) + +var reader *bufio.Reader = bufio.NewReader(os.Stdin) +var scanner *bufio.Scanner = bufio.NewScanner(os.Stdin) +var writer *bufio.Writer = bufio.NewWriter(os.Stdout) + +func main() { + defer writer.Flush() + + var N int + s := make([]int, 1000000) + top := 0 + + fmt.Scanln(&N) + + for i := 0; i < N; i++ { + scanner.Scan() + input := scanner.Text() + args := strings.Split(input, " ") + + switch args[0] { + case "1": + s[top], _ = strconv.Atoi(args[1]) + top += 1 + case "2": + if top == 0 { + fmt.Fprintln(writer, "-1") + } else { + fmt.Fprintln(writer, s[top-1]) + s[top-1] = 0 + top -= 1 + } + case "3": + fmt.Fprintln(writer, top) + case "4": + if top == 0 { + fmt.Fprintln(writer, "1") + } else { + fmt.Fprintln(writer, "0") + } + case "5": + if top == 0 { + fmt.Fprintln(writer, "-1") + } else { + fmt.Fprintln(writer, s[top-1]) + } + } + } +} diff --git a/202402720/2941.cc b/202402720/2941.cc new file mode 100644 index 0000000..2eaf2dc --- /dev/null +++ b/202402720/2941.cc @@ -0,0 +1,47 @@ +// Online C++ compiler to run C++ program online +#include + +using namespace std; + +char table[8][4] = { + {"c="}, {"c-"}, {"dz="}, {"d-"}, {"lj"}, {"nj"}, {"s="}, {"z="}, +}; + +int main() { + char input[200]; + char skip[200]; + memset(input, 0, sizeof(input)); + memset(skip, 0, sizeof(skip)); + cin >> input; + + int count = 0; + for (int i = 0; i < sizeof(input) - 1; i++) { + if (skip[i] == 0) { + bool found = false; + for (int j = 0; j < 8; j++) { + if (input[i] == table[j][0] && input[i + 1] == table[j][1]) { + if (j == 2 && i < sizeof(input) - 2) { + if (input[i + 2] == table[j][2]) { + found = true; + skip[i] = 1; + skip[i + 1] = 1; + skip[i + 2] = 1; + count++; + } + } else { + found = true; + skip[i] = 1; + skip[i + 1] = 1; + count++; + } + } + } + if (!found && input[i] != 0) { + count++; + } + } + } + + cout << count << endl; + return 0; +} \ No newline at end of file diff --git a/202402720/9020.cc b/202402720/9020.cc new file mode 100644 index 0000000..68d7e25 --- /dev/null +++ b/202402720/9020.cc @@ -0,0 +1,36 @@ +#include + +using namespace std; + +int main() { + int T; + cin >> T; + + for (int i = 0; i < T; i++) { + int n; + cin >> n; + + int arr[n]; + + for (int j = 0; j < n; j++) { + arr[j] = 1; + } + + for (int j = 2; j < n; j++) { + for (int k = j + j; k < n; k += j) { + arr[k] = 0; + } + } + + int h = n / 2; + + for (int j = h; j >= 2; j--) { + if (arr[j] == 1 && arr[n - j] == 1) { + cout << j << " " << n - j << endl; + break; + } + } + } + + return 0; +} \ No newline at end of file