백준 사이트의 단계별로 풀어보기 (단계별로 풀어보기 (acmicpc.net)) 네번째인 1차원 배열 문제들을 풀어볼 시간입니다.
이번 단계에서는 list 를 다루면서 입력값으로 list 생성, list 값 수정, 숫자 list 를 문자열로 변환하는 방법등을 익힐 수 있습니다.
반응형
C나 Java 였다면 N개의 숫자 입력을 for 문을 사용해서 하나씩 받아야 할 수도 있었겠지만,
파이썬의 경우 list() 를 사용해서 한번에 N개 의 숫자 배열을 만들 수 있습니다.
그리고 해당 list 에서 v 가 몇개인지도 list 의 count() 함수를 사용해서 바로 찾을 수 있습니다.
n = int(input())
num_list = list(map(int, input().split())) # N개 숫자 배열 생성
v = int(input())
print(num_list.count(v)) # num_list 배열에서 v 의 개수
이 문제에서는 처음에 0 의 값을 가지는 N 개짜리 리스트를 먼저 생성합니다.
그리고 slice 를 활용해서 특정 범위의 값을 같은 값으로 변경합니다.
출력 시에는 먼저 숫자 리스트를 문자열 리스트로 변경하고, 각 값을 스페이스바 간격을 두고 join 시킵니다.
n, m = map(int, input().split())
basket = [0] * n # N개의 바구니 생성 (0 ~ n-1)
for a in range(m):
i, j, k = map(int, input().split())
basket[(i-1):j] = [k] * (j-i+1) # (i-1) ~ j 번 바구니를 k 로 변경
print(' '.join(map(str, basket))) # basket 을 str 으로 변환 후 ' '(스페이스바) 를 사이에 두며 join 하기
이번 문제에서는 첫 리스트 생성할 때 0 을 가지는 값으로 생성 하는 것이 아닌 list(range()) 를 사용해서 숫자 범위 값을 가지는 리스트를 생성하였습니다.
그리고 swap 의 경우 C, Java 보다 훨씬 편하게 a, b = b, a 를 사용할 수 있습니다.
n, m = map(int, input().split())
basket = list(range(n+1)) # [0, 1, 2, ... , n] 리스트 생성
for a in range(m):
i, j = map(int, input().split())
basket[i], basket[j] = basket[j], basket[i] # i번 바구니와 j번 바구니 swap
print(' '.join(map(str, basket[1:])))
반응형
'IT > 알고리즘' 카테고리의 다른 글
[알고리즘/파이썬] 백준 2739번 구구단, 25304번 영수증, 25314번 코딩은 체육과목 입니다. (0) | 2023.06.14 |
---|---|
[알고리즘/파이썬] 백준 2884번 알람 시계, 2525번 오븐 시계 (사칙연산, 조건문) (0) | 2023.05.09 |
[알고리즘/파이썬] 백준 10171번 고양이, 10172번 개 (특수문자 출력) (0) | 2023.05.05 |
[알고리즘/파이썬] 백준 10869번 사칙연산 (사칙연산) (0) | 2023.04.26 |
[알고리즘/파이썬] 백준 2557번 Hello World (입출력) (0) | 2023.04.25 |
댓글