반응형

전체 글 338

백준 BAEKJOON 3226번 전화 요금 [PYTHON/파이썬]

백준 BAEKJOON 3226번 전화 요금 [PYTHON/파이썬] (BRONZE Ⅰ) https://www.acmicpc.net/problem/3226 3226번: 전화 요금 첫째 줄에 상근이가 건 전화의 수 N이 주어진다. (1 ≤ N ≤ 100) 다음 N개 줄에는 상근이가 건 전화에 대한 정보가 HH:MM DD와 같은 형식으로 주어진다. HH:MM은 전화를 건 시간이며, DD는 통화 시간이 www.acmicpc.net 현재 시각을 분으로 환산해줬다. (오전 7시 → 420분, 오후 7시 -> 1140분) 오전 7시부터 오후 7시까지에 해당되는 시간이라면 10을 더하고 그 외의 조건에서는 5를 더했다. 그리고 24시(1440분)가 되는 순간 현재 시간을 0분으로 초기화 시켜줬다. N = int(inpu..

ALGORITHM/PYTHON 2023.10.26

백준 BAEKJOON 17390번 이건 꼭 풀어야 해! [PYTHON/파이썬]

백준 BAEKJOON 17390번 이건 꼭 풀어야 해! [PYTHON/파이썬] (SILVER Ⅲ) https://www.acmicpc.net/problem/17390 17390번: 이건 꼭 풀어야 해! [2, 5, 1, 4, 3]을 비내림차순으로 정렬하면 [1, 2, 3, 4, 5]이다. www.acmicpc.net 누적합을 이용하여 풀었다. 기존에 풀었던 문제들과 똑같은 문제인데 조건에 따라 비내림차순으로 수열을 정렬 후 풀면 된다. import sys input = sys.stdin.readline N, Q = map(int, input().split()) A = [0] + list(map(int, input().split())) S = [0] * (N + 1) A.sort() for i in ran..

ALGORITHM/PYTHON 2023.10.25

백준 BAEKJOON 11660번 구간 합 구하기 5 [PYTHON/파이썬]

백준 BAEKJOON 11660번 구간 합 구하기 5 [PYTHON/파이썬] (SILVER Ⅰ) https://www.acmicpc.net/problem/11660 11660번: 구간 합 구하기 5 첫째 줄에 표의 크기 N과 합을 구해야 하는 횟수 M이 주어진다. (1 ≤ N ≤ 1024, 1 ≤ M ≤ 100,000) 둘째 줄부터 N개의 줄에는 표에 채워져 있는 수가 1행부터 차례대로 주어진다. 다음 M개의 줄에는 네 www.acmicpc.net 2차원 배열의 누적합을 구하여 풀면 된다. https://youtu.be/irLF8gaAoGk?si=8Qjt5fkvGTS-MYYq 해당 링크의 강의 영상을 참고하여 문제를 풀 수 있었다. 원본 배열을 A, 누적합 배열을 D로 만들었다. (문제 속 해당 인덱스를..

ALGORITHM/PYTHON 2023.10.24

백준 BAEKJOON 11659번 구간 합 구하기 4 [PYTHON/파이썬]

백준 BAEKJOON 11659번 구간 합 구하기 4 [PYTHON/파이썬] (SILVER Ⅲ) https://www.acmicpc.net/problem/11659 11659번: 구간 합 구하기 4 첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j www.acmicpc.net 백준 11441번 합 구하기와 같은 문제이다. 백준 BAEKJOON 11441번 합 구하기 [PYTHON/파이썬] 백준 BAEKJOON 11441번 합 구하기 [PYTHON/파이썬] (SILVER Ⅲ) https://www.acmicpc.net/problem/11441 11441..

ALGORITHM/PYTHON 2023.10.23

백준 BAEKJOON 11441번 합 구하기 [PYTHON/파이썬]

백준 BAEKJOON 11441번 합 구하기 [PYTHON/파이썬] (SILVER Ⅲ) https://www.acmicpc.net/problem/11441 11441번: 합 구하기 첫째 줄에 수의 개수 N이 주어진다. (1 ≤ N ≤ 100,000) 둘째 줄에는 A1, A2, ..., AN이 주어진다. (-1,000 ≤ Ai ≤ 1,000) 셋째 줄에는 구간의 개수 M이 주어진다. (1 ≤ M ≤ 100,000) 넷째 줄부터 M개의 줄에는 www.acmicpc.net 누적합을 이용해서 풀면 된다. 먼저 원본 배열을 기준으로 누적합을 담을 배열을 담는다. k번째 인덱스의 누적합을 구하는 공식은 k-1번째 누적합에서 원본 배열의 k번째 인덱스를 더한 것과 같다. S[k] = S[k - 1] + A[k] 이렇..

ALGORITHM/PYTHON 2023.10.22

백준 BAEKJOON 1773번 폭죽쇼 [PYTHON/파이썬]

백준 BAEKJOON 1773번 폭죽쇼 [PYTHON/파이썬] (BRONZE Ⅱ) https://www.acmicpc.net/problem/1773 1773번: 폭죽쇼 2 1 2 1 1 1 2 1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 위의 그림에서 1,2가 쓰여있는 4, 6, 8, 12, 16, 18, 20초에 폭죽이 밤 하늘에 터진다. 단 12초에는 두 폭죽이 동시에 하늘에 터지지만 한 www.acmicpc.net 먼저 폭죽쇼가 끝나는 시간 +1 만큼 0으로 채워진 리스트를 만들었다. 그리고 폭죽이 터지는 시간에 해당되는 인덱스에 1로 채워준 뒤 sum을 사용하여 결과를 출력했다. import sys input = sys..

ALGORITHM/PYTHON 2023.10.20

백준 BAEKJOON 30087번 진흥원 세미나 [PYTHON/파이썬]

백준 BAEKJOON 30087번 진흥원 세미나 [PYTHON/파이썬] (BRONZE Ⅴ) https://www.acmicpc.net/problem/30087 30087번: 진흥원 세미나 $N$개의 줄에 걸쳐서 각 세미나가 어느 교실에서 열리는지 한 줄에 하나씩 출력한다. www.acmicpc.net 딕셔너리를 구현하여 풀었다. seminar = { "Algorithm": "204", "DataAnalysis": "207", "ArtificialIntelligence": "302", "CyberSecurity": "B101", "Network": "303", "Startup": "501", "TestStrategy": "105", } N = int(input()) for _ in range(N): L =..

ALGORITHM/PYTHON 2023.10.19

백준 BAEKJOON 30008번 준영이의 등급 [PYTHON/파이썬]

백준 BAEKJOON 30008번 준영이의 등급 [PYTHON/파이썬] (BRONZE Ⅳ) https://www.acmicpc.net/problem/30008 30008번: 준영이의 등급 첫째 줄에 각 과목별 준영이의 등급을 의미하는 $K$개의 정수 $D_1$, $D_2$, $\cdots$, $D_K$ $(1 \leq D_i \leq 9)$를 공백으로 구분하여 출력하라. www.acmicpc.net 나는 if문을 여러 줄 써서 풀었다. 문제의 조건처럼 준영이의 등수에 100을 곱하고 학생 수로 나눈 몫을 구한 뒤 조건문 처리한 후 결과를 도출했다. N, K = map(int, input().split()) G = list(map(int, input().split())) result = [] for i i..

ALGORITHM/PYTHON 2023.10.12

백준 BAEKJOON 30031번 지폐 세기 [PYTHON/파이썬]

백준 BAEKJOON 30031번 지폐 세기 [PYTHON/파이썬] (BRONZE Ⅳ) https://www.acmicpc.net/problem/30031 30031번: 지폐 세기 대한민국 지폐는 천 원권, 오천 원권, 만 원권, 오만 원권으로 총 네 종류가 있다. 각 지폐의 세로 길이는 $68\text{mm}$로 모두 같지만, 가로 길이는 모두 다르다. 천 원권의 가로 길이는 $136\text{mm}$, www.acmicpc.net 가로의 길이만 신경써서 지폐의 종류를 구분해주면 된다. N = int(input()) result = 0 for _ in range(N): w, h = map(int, input().split()) if w == 136: result += 1000 elif w == 142:..

ALGORITHM/PYTHON 2023.10.08
반응형