반응형

BRONZE Ⅱ 28

백준 BAEKJOON 32171번 울타리 공사 [PYTHON/파이썬]

백준 BAEKJOON 32171번 울타리 공사 [PYTHON/파이썬] (BRONZE Ⅱ)https://www.acmicpc.net/problem/32171        N개의 건물을 짓지만 첫 건물이 좌표의 기준이 되어야하기 때문에 따로 입력을 받아주었다.좌표 (a, b)와 (c, d)로 이루어진 사각형의 둘레가 문제에서 얘기하는 울타리 공사의 비용이다.둘레를 구하는 공식은 ((c - a) + (d - b)) * 2 이다. 그렇기 때문에 따로 함수로 만들어 사용했다.새로운 건물을 지으면서 주어지는 좌표 (a, b)와 기존 좌표 (a, b)는 min 함수를 통해서새로운 건물을 지으면서 주어지는 좌표 (c, d)와 기존 좌표 (c, d)는 max 함수를 통해서값을 수정한 뒤에 울타리 공사의 비용을 개별로 출..

백준 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, ..

백준 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)

백준 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..

백준 BAEKJOON 31844번 창고지기 [PYTHON/파이썬]

백준 BAEKJOON 31844번 창고지기 [PYTHON/파이썬] (BRONZE Ⅱ)https://www.acmicpc.net/problem/31844       박스를 원하는 칸으로 이동시키기 위해서는로봇의 위치 혹은 깃발의 위치 가 성립해야 한다.성립하지 않으면 박스를 원하는 칸으로 옮길 수 없기 때문에 -1을 출력한다. 로봇의 첫 번째 명령은 박스의 위치 한 칸 전까지 이동해야 하니박스의 위치에서 로봇의 위치를 뺀 뒤 또 1을 빼줘야 한다. 로봇의 두 번째 명령은 박스를 미는 행위이기 때문에깃발의 위치에서 박스의 위치를 빼주면 된다. 이 두 가지 명령의 횟수를 더해주면 결과를 출력할 수 있다.       storage = list(input())robot = storage.index("@") # ..

백준 BAEKJOON 31881번 K512에 바이러스 퍼뜨리기 [PYTHON/파이썬]

백준 BAEKJOON 31881번 K512에 바이러스 퍼뜨리기 [PYTHON/파이썬] (BRONZE Ⅱ)https://www.acmicpc.net/problem/31881       input 대신 sys.stdin.readline.rstrip()을 사용해야 시간 초과가 나지 않는다.바이러스 감염 여부를 체크하는 리스트를 만든 후결과값을 N과 같게 설정했다. query의 길이가 1보다 크면case와 x에 0번째 인덱스, 1번째 인덱스를 나눠 저장하였고그렇지 않다면 case 값만 저장했다. case가 1일 경우 승형이가 감염 시키는 행위이니바이러스 감염 여부를 체크한 뒤 결과값에 -1을 해주고 case가 2일 경우 근수가 치료하니바이러스 감염 여부를 체크한 뒤 결과값에 +1을 해주었다. case가 3일 경..

백준 BAEKJOON 31880번 K512컵 개최! [PYTHON/파이썬]

백준 BAEKJOON 31880번 K512컵 개최! [PYTHON/파이썬] (BRONZE Ⅱ)https://www.acmicpc.net/problem/31880       초기 행운 수치가 0인 것과 a와 b의 범위를 숙지한다면 쉽게 풀 수 있다.(a는 행운을 더하는 주문서, b는 행운을 곱하는 주문서)만약 b 주문서 목록에 0이 들어있다면 초기 행운 수치가 0이니바로 곱해줘서 소모해줘야 한다. 즉, a 주문서들을 모두 더한 값에 b 주문서들을 곱하되0인 주문서는 continue로 건너뛰어 곱해준 뒤 결괏값을 출력하면 된다는 뜻이다.       N, M = map(int, input().split())a = list(map(int, input().split()))b = list(map(int, input..

백준 BAEKJOON 31832번 팀명 정하기 2 [PYTHON/파이썬]

백준 BAEKJOON 31832번 팀명 정하기 2 [PYTHON/파이썬] (BRONZE Ⅱ)https://www.acmicpc.net/problem/31832       처음엔 for 문 안에서 세 가지 조건을 다 대입하려다가조건이 꼬여서 히든 케이스를 잡지 못했다.결국에는 조건 하나하나마다 함수를 만들어서 풀게 되었다.함수를 통해 세 가지 조건 모두 참인 팀명이 정답이 되는 것이다. ※ 알파벳 대문자, 알파벳 소문자, 숫자, 하이픈의 아스키코드는 각각 65-90, 97-122, 48-57, 45이다.  첫 번째 조건, 대문자가 소문자보다 많으면 안 된다.결국 소문자는 대문자보다 크거나 같아야 한다.나는 for 문과 ord 함수를 사용하여 대문자와 소문자 개수를 파악하였다.  두 번째 조건, 팀명은 10..

백준 BAEKJOON 5054번 주차의 신 [PYTHON/파이썬]

백준 BAEKJOON 5054번 주차의 신 [PYTHON/파이썬] (BRONZE Ⅱ) https://www.acmicpc.net/problem/5054 5054번: 주차의 신 첫째 줄에 테스트 케이스의 개수 t가 주어진다. (1 ≤ t ≤ 100) 모든 테스트 케이스는 두 줄로 이루어져 있다. 첫째 줄에는 선영이가 방문할 상점의 수 n이 주어지며 (1 ≤ n ≤ 20), 둘째 줄에는 상점 www.acmicpc.net 상점은 일직선 상에 위치하기 때문에 가장 큰 좌표에서 가장 작은 좌표를 뺀 뒤 2를 곱하면 최솟값을 구할 수 있다. t = int(input()) for _ in range(t): n = int(input()) store = sorted(map(int, input().split())) pri..

반응형