반응형

BRONZE Ⅱ 35

백준 BAEKJOON 1919번 애너그램 만들기 [PYTHON/파이썬]

백준 BAEKJOON 1919번 애너그램 만들기 [PYTHON/파이썬] (BRONZE Ⅱ)https://www.acmicpc.net/problem/1919       첫째 줄과 둘째 줄에 입력되는 영어 단어의 알파뱃 개수를 세는 방법으로 문제에 접근했다.길이가 26인 리스트를 만든 후 ord()를 활용하여 주어지는 알파뱃의 아스키코드를 확인하여각 알파뱃들이 몇 번 등장하는지 리스트 형태로 구현했다.그리고 만들어진 두 개의 리스트를 0번째 인덱스부터 비교하여알파뱃 개수가 다르다면 그 개수의 차이만큼 결과값에 더해준 뒤 출력해 줬다.      def checkAlpha(x): lst = [0] * 26 for i in x: lst[ord(i) - 97] += 1 return ls..

ALGORITHM/PYTHON 2024.12.28

백준 BAEKJOON 1592번 영식이와 친구들 [PYTHON/파이썬]

백준 BAEKJOON 1592번 영식이와 친구들 [PYTHON/파이썬] (BRONZE Ⅱ)https://www.acmicpc.net/problem/1592       영식이와 친구들이 공을 받은 횟수를 리스트로 만들어줬다.처음에 1번 자리에 앉은 사람이 공을 받으니[1, 0, 0, 0, ..., 0] 형태로 구현해 줬다.ball = [1] + [0] * (N - 1)공을 M번 받은 시점에서 게임이 종료되니만약 M이 1일 경우에는 바로 게임이 끝나게끔 if 문을 구현했다.그렇지 않다면 while 문을 활용하여 공을 받은 횟수가 홀수라면 오른쪽으로 L만큼 던지고짝수라면 왼쪽으로 L만큼 던지게끔 idx 값을 조절했다.만약 idx가 리스트의 길이인 N의 범위를 벗어날 수도 있으니 if 문으로 idx 값을 조절했..

ALGORITHM/PYTHON 2024.12.20

백준 BAEKJOON 1434번 책 정리 [PYTHON/파이썬]

백준 BAEKJOON 1434번 책 정리 [PYTHON/파이썬] (BRONZE Ⅱ)https://www.acmicpc.net/problem/1434        박스의 인덱스를 i, 책의 인덱스를 j로 설정하고while 문을 책의 개수만큼 돌렸다.현재 들고 있는 책이 앞에 있는 박스의 용량보다 같거나 작다면책을 해당 박스에 집어 놓고 박스의 용량에서 책의 크기만큼 빼줬다.그리고 만약 책이 박스의 용량보다 크다면 박스의 인덱스를 +1 하여 다음 박스로 이동했다.이걸 반복하면 현재 박스의 남아있는 용량을 체크하여 sum 함수를 통해 정답을 출력할 수 있다.      N, M = map(int, input().split())A = list(map(int, input().split()))B = list(map(..

ALGORITHM/PYTHON 2024.12.08

백준 BAEKJOON 32767번 계산기가 필요해 [PYTHON/파이썬]

백준 BAEKJOON 32767번 계산기가 필요해 [PYTHON/파이썬] (BRONZE Ⅱ)https://www.acmicpc.net/problem/32767       먼저 주어지는 입력을 공백을 기준으로 나눈 뒤 리스트 형태로 만들었다.(0, 2, 4번째 인덱스에는 세 개의 수 / 1, 3번째 인덱스에는 연산자)그리고 0, 2, 4번째 인덱스가 정수인지 소수인지 판별하기 위해 함수를 만들었다.단순하게 해당 문자열에 점(.)이 포함되어 있으면 float로 return, 그렇지 않다면 int로 return 했다.1번째 인덱스부터 시작하여 증감 치는 2로 설정한 for문을 통해 주어진 수에 대한 계산을 진행했다.계산한 결과를 소수점 아래 넷째 자리에서 반올림하기 위해 {:.3f}".format을 사용 후 ..

ALGORITHM/PYTHON 2024.12.04

백준 BAEKJOON 32685번 4-LSB [PYTHON/파이썬]

백준 BAEKJOON 32685번 4-LSB [PYTHON/파이썬] (BRONZE Ⅱ)https://www.acmicpc.net/problem/32685       입력으로 들어오는 10진수를 format 함수를 사용하여 2진수로 변환한 뒤 아래의 함수에 넣어줬다.def four_LSB(x): if len(x)  함수를 통해 4-LSB의 은폐 데이터로 추출한 값으로 나온다. (최하위 4비트의 값)n1, n2, n3를 주어진 순서대로 이어준 뒤 다시 10진수로 변환하였다.비밀번호는 4자리이기 때문에 4자리보다 작으면 그만큼 "0"을 앞에 추가해 주었다.        def four_LSB(x): if len(x)

ALGORITHM/PYTHON 2024.12.03

백준 BAEKJOON 32529번 래환이의 여자친구 사귀기 대작전 [PYTHON/파이썬]

백준 BAEKJOON 32529번 래환이의 여자친구 사귀기 대작전 [PYTHON/파이썬] (BRONZE Ⅱ)https://www.acmicpc.net/problem/32529        누적합을 활용하여 풀었다.먼저 체중 감소량 A를 입력받아 뒤집어줬다.for문을 통해 누적합 리스트 PrefixSum를 채워준 뒤가장 마지막 인덱스가 M 보다 작으면 다이어트 실패이기 때문에 -1을 출력,그렇지 않다면 M보다 크거나 같은 인덱스를 찾아 몇일차인지 출력하면 된다.      import sysinput = sys.stdin.readlineN, M = map(int, input().split())A = [0] + list((map(int, input().split())))[::-1]PrefixSum = [0] ..

ALGORITHM/PYTHON 2024.12.01

백준 BAEKJOON 32280번 지각생 [PYTHON/파이썬]

백준 BAEKJOON 32280번 지각생 [PYTHON/파이썬] (BRONZE Ⅱ)https://www.acmicpc.net/problem/32280        처음엔 교실에 들어온 시각을 전부 분(min) 형태로 치환을 해줄까 했지만그냥 문자열 그대로 대소 비교를 해주니 원하는 결과를 얻을 수 있었다.문제의 조건에 따라 학생들의 도착 시간이정해진 등교 시간과 선생님이 도착한 시간보다 크거나 같을 때가 지각이기에if 문을 통해 결과값에 더했다.       N = int(input())timeTable = []teacherTime = ""for _ in range(N + 1): a, b = input().split() if b == "teacher": # 선생님 도착 시간 tea..

ALGORITHM/PYTHON 2024.09.29

백준 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 함수를 통해서값을 수정한 뒤에 울타리 공사의 비용을 개별로 출..

ALGORITHM/PYTHON 2024.09.11

백준 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 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
반응형