반응형

전체 글 336

백준 BAEKJOON 32184번 디미고에 가고 싶어! [PYTHON/파이썬]

백준 BAEKJOON 32184번 디미고에 가고 싶어! [PYTHON/파이썬] (BRONZE Ⅲ)https://www.acmicpc.net/problem/32184        B에서 A를 뺀 값을 2로 나눈 몫에서 1을 더해주면 결과를 도출할 수 있다.하지만 A가 짝수, B가 홀수인 경우에만 2를 더해줘야한다.왜냐하면 A가 짝수일 때 세로로 한 장, B가 홀수인 경우 세로로 한 장이 추가되기 때문이다.      A, B = map(int, input().split())if A % 2 == 0 and B % 2 != 0: print((B - A) // 2 + 2)else: print((B - A) // 2 + 1)

ALGORITHM/PYTHON 2024.09.05

백준 BAEKJOON 32141번 카드 게임 (Easy) [PYTHON/파이썬]

백준 BAEKJOON 32141번 카드 게임 (Easy) [PYTHON/파이썬] (BRONZE Ⅱ)https://www.acmicpc.net/problem/32141       오름차순으로 정렬된 카드의 공격력을 누적합 리스트 S로 만들었다.즉, 누적합의 마지막 인덱스의 요소가 모든 카드의 공격력의 합과 같다.그러니 먼저 모든 카드를 사용하여 상대를 죽일 수 없으면 -1을 출력하고그렇지 않다면 for문으로 순회하여 몇 개의 카드를 사용해야상대를 죽일 수 있는지 출력하면 된다.        N, H = map(int, input().split())d = [0] + list(map(int, input().split()))S = [0] * (N + 1) # 공격력 누적합 배열for k in range(1, ..

ALGORITHM/PYTHON 2024.09.03

백준 BAEKJOON 32132번 PlayStation이 아니에요 [PYTHON/파이썬]

백준 BAEKJOON 32132번 PlayStation이 아니에요 [PYTHON/파이썬] (BRONZE Ⅰ)https://www.acmicpc.net/problem/32132      단순하게 문자열을 바꾸면 된다고 생각해서 replace()를 사용하여 풀었다.문제를 푸는 과정에서 replace를 여러개 사용할 수 있다는 것도 알게 되었다.      N = int(input())word = input()while True: if "PS4" in word or "PS5" in word: word = word.replace("PS4", "PS").replace("PS5", "PS") else: breakprint(word)

ALGORITHM/PYTHON 2024.09.02

백준 BAEKJOON 32193번 승강장의 깊이 [PYTHON/파이썬]

백준 BAEKJOON 32193번 승강장의 깊이 [PYTHON/파이썬] (BRONZE Ⅲ)https://www.acmicpc.net/problem/32193         처음 풀었을 때는 시간 초과가 떠서 당황했다.단순하게 생각했던 게 잘못이었던 것 같았다.# 처음 풀이 (시간 초과)N = int(input())tmp = 0for _ in range(N): A, B = map(int, input().split()) result = A - B + tmp print(result) tmp = result   고민하던 찰나에 누적합을 적용하니 정답처리가 되어서 문제를 풀 수 있었다.누적합에 관한 내용은 아래의 글을 참고하면 좋다! 백준 BAEKJOON 11441번 합 구하기 [PYTHON..

ALGORITHM/PYTHON 2024.08.29

백준 BAEKJOON 32068번 보물 찾기 [PYTHON/파이썬]

백준 BAEKJOON 32068번 보물 찾기 [PYTHON/파이썬] (BRONZE Ⅲ)https://www.acmicpc.net/problem/32068       시작하는 위치 S에서 L과 R 중에 먼저 누가 도달하는지 원리만 알면 쉽다.먼저 L과 S, R과 S 사이의 거리를 구한 뒤에L과 S의 거리가 작다면 (거리 * 2 + 1),R과 S의 거리가 작다면 (거리 * 2)를 적용시키면 된다. (L-S, R-S 거리가 같아도 이 수식을 적용)      T = int(input())for _ in range(T): L, R, S = map(int, input().split()) L_Check, R_Check = S - L, R - S if L_Check

ALGORITHM/PYTHON 2024.08.22

백준 BAEKJOON 32025번 체육은 수학과목 입니다 [PYTHON/파이썬]

백준 BAEKJOON 32025번 체육은 수학과목 입니다 [PYTHON/파이썬] (BRONZE Ⅳ)https://www.acmicpc.net/problem/32025        직사각형의 가로, 세로 길이 중 작은 값의 반절이 원의 반지름 값과 같다.미터(m) 단위를 센티미터(cm) 단위로 표현하기 위해 100을 곱해주면 된다.       H = int(input())W = int(input())print(int(min(H, W) * 100 / 2))

ALGORITHM/PYTHON 2024.08.05

백준 BAEKJOON 31995번 게임말 올려놓기 [PYTHON/파이썬]

백준 BAEKJOON 31995번 게임말 올려놓기 [PYTHON/파이썬] (BRONZE Ⅱ)https://www.acmicpc.net/problem/31995        첫 번째 게임말을 두고 오른쪽 아래 대각선에 게임말을 두는 경우와오른쪽 위 대각선에 게임말을 두는 경우를 잘 생각하여규칙을 찾아낸다면 쉽게 풀 수 있다.결과적으로는 가로 길이와 세로 길이 중 하나라도 1이면 경우의 수가 0이고그렇지 않다면 (가로 길이 -1) * (세로 길이 -1) * 2가 정답이다.        N = int(input())M = int(input())if N == 1 or M == 1: print(0)else: print((N - 1) * (M - 1) * 2)

ALGORITHM/PYTHON 2024.08.01

백준 BAEKJOON 31246번 모바일 광고 입찰 [PYTHON/파이썬]

백준 BAEKJOON 31246번 모바일 광고 입찰 [PYTHON/파이썬] (SILVER Ⅴ)https://www.acmicpc.net/problem/31246       MOLOCO가 제시한 입찰 가격 A와 MOLOCO의 입찰가를 제외한 다른 모든 입찰가 중 최고 가격 B가 주어진다.목표 낙찰 지면 수가 최소 K개 이상이 되도록 하는 것이 문제의 핵심이다.즉, B에서 A를 뺀 값들을 리스트에 담은 뒤 오름차순으로 정렬하여K-1번 째 인덱스를 확인하면 된다. (0번째 인덱스부터 시작하니 -1)K-1번 째 인덱스의 값이 음수면 최소 K개의 지면을 낙찰 받았다는 것을 의미하여 0을 출력,양수면 그 값만큼 올려주면 조건을 성립하기 때문에 최소 정수 X라는 것을 의미한다.        import sysinpu..

ALGORITHM/PYTHON 2024.07.28

백준 BAEKJOON 31866번 손가락 게임 [PYTHON/파이썬]

백준 BAEKJOON 31866번 손가락 게임 [PYTHON/파이썬] (BRONZE Ⅱ)https://www.acmicpc.net/problem/31866      if문과 튜플을 활용하여 문제를 풀었다.'무효'를 낸 플레이어는 무조건 지는 것만 신경써주면 된다.(둘 다 '무효'를 낸다면 승패를 가릴 수 없다.)      A, B = input().split()if A in ("0", "2", "5") and B not in ("0", "2", "5"): print(">")elif A not in ("0", "2", "5") and B in ("0", "2", "5"): print("")elif (A, B) in (("2", "0"), ("5", "2"), ("0", "5")): prin..

ALGORITHM/PYTHON 2024.07.23

백준 BAEKJOON 31994번 강당 대관 [PYTHON/파이썬]

백준 BAEKJOON 31994번 강당 대관 [PYTHON/파이썬] (BRONZE Ⅳ)https://www.acmicpc.net/problem/31994       세미나의 이름과 신청자 수를 2차원 배열로 만든 뒤신청자 수를 기준으로 내림차순 정렬해주었다.그리고 0번째 인덱스의 세미나의 이름을 출력했다.      result = []for _ in range(7): seminar, num = input().split() result.append([seminar, int(num)])result.sort(key=lambda x: -x[1])print(result[0][0])

ALGORITHM/PYTHON 2024.07.19
반응형