코딩라이브러리/파이썬

파이썬 리스트 배열 list (with 백준 5597, 10250)

유니네 라이브러리 2024. 5. 22. 19:14

파이썬의 리스트는 대괄호 사이에 쉼표로 구분된 값들로 표현한다.

  • 일차원 리스트
A = ['a', 'b', 'c', 'd', 'e']
B = ['가', '나', '다', '라', '마']
print(A) # ['a', 'b', 'c', 'd', 'e']
print(B) # ['가', '나', '다', '라', '마']
  • 이차원 리스트
A = [['a','b'], ['c','d'],['e','f']]
print(A)    # [['a', 'b'], ['c', 'd'], ['e', 'f']]
print(A[0]) # ['a', 'b']
print(A[0][0]) # a

 

리스트 값 저장

  • append() 내장함수 사용 : 마지막 인덱스에 추가
A = []
# 리스트 값 추가
A.append("a")
A.append("b")
A.append("c")
A.append("d")
A.append("e")
print(A) # ['a', 'b', 'c', 'd', 'e']
  • insert( idx, ‘value’) : 원하는 인덱스에 배열로 추가
A = ['a', 'b', 'c', 'd', 'e']
A.insert(2, "F")
print(A) # ['a', 'b', 'F', 'c', 'd', 'e']

 

이차원 리스트 값 저장

  • append( [’value’] ) : 마지막 인덱스에 추가
A = [['a','b'], ['c','d'],['e','f']]
A.append(['g','h'])
print(A) # [['a', 'b'], ['c', 'd'], ['e', 'f'], ['g', 'h']]
  • insert( idx, [‘value’] ) : 원하는 인덱스에 배열로 추가
A = [['a','b'], ['c','d'],['e','f']]
A.insert(1,['g','h'])
print(A) # [['a', 'b'], ['g', 'h'], ['c', 'd'], ['e', 'f']]

A[i].insert(1,'A')
print(A) # [['a', 'b'], ['g','A','h'], ['c', 'd'], ['e', 'f']]

 

리스트 값 제거

  • pop() : 값을 삭제하고 삭제한 값 반환
A = ['a', 'b', 'c', 'd', 'e']
# pop()
# 기본 인덱스 -1 (맨 뒤에 값)
print(A.pop()) # e 반환
print(A) # ['a', 'b', 'c', 'd']
# 인덱스 지정 삭제
print(A.pop(0)) # a 반환
print(A) # ['b', 'c', 'd']
  • remove() : 특정값 지정. 리스트에서 첫 번째 값 제거. 리스트 전체 동일한 값 제거는 아님
A = ['a', 'b', 'b', 'c', 'd']
# 특정값 지정. 리스트에서 첫 번째 값 제거
print(A.remove('b')) # None 삭제한 값 반환하지 않음
print(A) # ['a', 'b', 'c', 'd'] 1번째 b 만 삭제됨
  • del() : 특정 인덱스 지정 삭제. 여러 인덱스 지정 가능
A = ['a', 'b', 'c', 'd', 'e']
# 특정 인덱스 지정 삭제. 여러 인덱스 지정 가능
del A[0]
print(A) # ['b', 'c', 'd', 'e']
del A[1:3]
print(A) # ['b', 'e']

 

▷ 리스트 값 뒤집기 이전 글 참고

 

파이썬 문자열 거꾸로 해보기 (with 백준 1251 6438)

문자열 거꾸로 하는 방법은 3가지가 있다.문자열 슬라이싱으로 처리하기문자열을 리스트로 변환하고 reverse() 함수 사용하기sorted(iterable, reverse=True) 내장함수 사용하기.리스트로 반환된다#1.문자

yuneenelife.tistory.com

▷ 리스트 배열 복사 이전 글 참고

 

파이썬 리스트 배열의 얕은 복사(copy), 깊은 복사(deepcopy) 차이점

파이썬의 리스트를 복사하는 방법은 얕은 복사(copy)와 깊은 복사(deepcopy)가 있다.여기서 주의할 점이 있는데, 리스트 자체를 대입하게 되면 내가 의도한 대로 복사가 되지 않는다.내가 의도한 대

yuneenelife.tistory.com

▶ 리스트 연습 백준 문제 풀이
https://www.acmicpc.net/problem/5597

"""
입력은 총 28줄로 
각 제출자(학생)의 출석번호 n(1 ≤ n ≤ 30)가 한 줄에 하나씩 주어진다. 
출석번호에 중복은 없다.
출력은 2줄이다. 
1번째 줄엔 제출하지 않은 학생의 출석번호 중 가장 작은 것을 출력하고, 
2번째 줄에선 그 다음 출석번호를 출력한다.
"""
#입력값 받기
inputRow = [input() for _ in range(28)]
#출력 변수 선언
rtn = []
#문제풀이
for i in range(1, 31):  
    if (inputRow.count(str(i)) == 0):
        rtn.append(i)
rtn.sort()
print(*rtn, sep="\n")

 

▶ 이차원 배열 연습 백준 문제 풀이

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

"""
입력
프로그램은 표준 입력에서 입력 데이터를 받는다. 
프로그램의 입력은 T 개의 테스트 데이터로 이루어져 있는데 T 는 입력의 맨 첫 줄에 주어진다. 
각 테스트 데이터는 한 행으로서 H, W, N, 세 정수를 포함하고 있으며 
각각 호텔의 층 수, 각 층의 방 수, 몇 번째 손님인지를 나타낸다(1 ≤ H, W ≤ 99, 1 ≤ N ≤ H × W).

출력
프로그램은 표준 출력에 출력한다. 
각 테스트 데이터마다 정확히 한 행을 출력하는데, 
내용은 N 번째 손님에게 배정되어야 하는 방 번호를 출력한다.
"""
#입력값 받기
T = int(input())
tData = [input().split(" ") for _ in range(0, T)]
rtn = []
#문제풀이
for i in range(0, T):
    H = int(tData[i][0]) #호텔의 층 수
    W = int(tData[i][1]) #각 층의 방 수
    N = int(tData[i][2]) #몇 번째 손님
    if N % H == 0: #층 꼭대기이면
        line = N // H
        floor = H
    else:
        line = (N // H) + 1 #몇 호 라인인지
        floor = N - (H * ( N // H )) #몇 층인지
        #floor = N - (H * (line - 1)) #몇 층인지
    ho = str(floor) + str(line).zfill(2)
    rtn.append(ho)
print(*rtn, sep="\n")

 

☞ 파이썬 자습서 참고 사이트

 

3. An Informal Introduction to Python

In the following examples, input and output are distinguished by the presence or absence of prompts (>>> and …): to repeat the example, you must type everything after the prompt, when the prompt ap...

docs.python.org