Doby's Lab

[파이썬] 백준 1350번: 진짜 공간, 리스트(List) 본문

Code about AI/Python

[파이썬] 백준 1350번: 진짜 공간, 리스트(List)

도비(Doby) 2022. 3. 1. 15:21

https://www.acmicpc.net/problem/1350

 

1350번: 진짜 공간

첫째 줄에 파일의 개수 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 파일의 크기가 공백을 사이에 두고 하나씩 주어진다. 파일의 크기는 1,000,000,000보다 작거나 같은 음이 아닌

www.acmicpc.net

(리스트에 관한 참고 자료)

https://art-coding3.tistory.com/6

 

[Python/파이썬] input을 이용해 값을 입력 받아 리스트에 넣기

input 사용자가 입력한 값을 읽어드리는 함수 일반적으로 입력받은 것들을 문자열로 받아들인다.  list1이라는 빈 리스트를 생성한다.  input을 통해 사용자가 값을 입력하게 하고 이를 s라는 변수

art-coding3.tistory.com

이번 문제는 for문을 통해 파일의 크기를 즉각적으로 입력받아 처리하려 했었는데 파이썬은 데이터를 한 줄씩 읽는 거 같다.

그래서 int(input)의 형태로 for문을 통해 입력을 받기는 안 되기 때문에 리스트(list)라는 자료형이 필요했다.

 

리스트는 배열과 같은 역할이다. 데이터들을 하나의 변수(리스트)에다가 묶어서 저장할 수 있다.

 

리스트를 선언하는 방법은 크게 2가지 방법이 있다.

 

li1 = [1, 2, 3]
li2 = list()

다음과 같이 대괄호를 이용해 선언하는 방법이 있고, list()를 이용해 빈 리스트를 사용하는 방법이 있다.

물론 li1에는 [1, 2, 3] 원소가 각각 들어가 있다.

 


우선은 리스트에 입력을 넣는 방법이 급하기 때문에 리스트에 입력 넣는 방법부터 먼저 알아보자.

.append()

li = list()
a = int(input())
li.append(a)

다음과 같이 append 메서드를 사용하여 li라는 빈 리스트 변수에 a라는 int형 변수를 집어넣을 수 있다. 다른 자료형도 마찬가지다.

숫자, 문자 혼용이 가능하다고 한다. (웬만하면 그럴 일 없게 사용해야겠다)

 

하지만, 지금은 입력을 원하면서도 한 줄에 모든 입력 데이터가 있기 때문에 이 방법을 원하는 것은 아니다.

이럴 때 필요한 함수가

.split()

split()은 원래 문자열 관련 메서드인데 원래 이렇게 생겼다.

.split(sep, maxsplit)

sep는 구분자, maxsplit은 최대 구분 횟수이다.

따로 구분자를 설정해두지 않는다면 ' '(띄어쓰기)로 디폴트 되어있다.

 

li = list(input().split())

print(li)

이런 식으로 사용할 수 있는데 "Hello, World!"를 입력한다고 치면 output값은 이렇게 돌아온다.

['Hello,', 'World!']

띄어쓰기를 기준으로 끊겨 리스트에 각 원소로 들어간 것을 알 수 있다.

 

그렇다면 이건 문자열이고, 숫자는 어떤 식으로 입력받아야 하는가?

li = list(map(int, input().split()))

print(li)

map을 사용하여 입력을 받아야 한다. 

(이렇게 사용해야 하는 이유 https://ccamppak.tistory.com/38)

int 변환형 함수가 리스트는 변환시킬 수 없어서 map을 사용한다고 한다.

 


[AC 코드]

n = int(input())
li = list(map(int, input().split()))
m = int(input())

result = 0

for i in li:
    if i % m == 0:
        result += i // m
    else:
        result += i // m + 1
    
print(result * m)
728x90