백준 단계별로 풀어보기 - 4단계: 1차원 배열 코드 리뷰

Kim So-Myoung·2024년 2월 15일
0
post-thumbnail

4단계: 1차원 배열

numList = list(map(int, input().split())) #for문 사용 없이 list mapping 가능

10807: 개수 세기

num = int(input())
numList = list(map(int, input().split()))
searchNum = int(input())

# count 함수 사용
print(numList.count(searchNum))

10871: X보다 작은 수

N, X = map(int, input().split())
A = list(map(int, input().split()))

for i in range(N):
if(A[i] < X):
  print(A[i], end=' ')
  • sep(separation), end
    • sep(separation)
      print('S','E','P', sep='&')
      >>> S&E&P
    • end
    # 기본 print 출력이 끝나면 줄바꿈
    for i in range(N):
      if(A[i] < X):
        print(A[i])
    >>> 1
        4
        2
        3
    # print 출력이 끝난 후 ' '로 변경
    for i in range(N):
     if(A[i] < X):
      print(A[i], end=' ') # A[i] 출력이 끝난 후 ' ' 출력
    >>> 1 4 2 3

2562: 최댓값

numList = []

for i in range(9):
    numList.append(int(input()))

print(max(numList))
print(numList.index(max(numList))+1) # index 함수

n개 리스트의 index는 0 ~ (n-1)로 주어지기 때문에 문제에서 1부터 순서를 따지는 경우 +1을 해주어야한다.

  • index 함수
a = [11,10,12,13,20,31,11,10,10,11]
print(a.index(10,2,9))    # index(value, start, end)
>>> 7

5597: 과제 안 내신 분..?

student = list(range(1, 31))

for i in range(28):
  student.remove(int(input())) //입력한 값 삭제
      
print(min(student))
print(max(student))
  • list 삭제 함수
  1. list.pop()
    가장 마지막 인덱스 에 있는 원소를 추출하여 삭제

  2. list.remove(삭제할 값)
    파라미터: 삭제할 값
    같은 값이 존재하면 가장 앞에 있는 인덱스 1개만 삭제

  3. list.clear()
    list에 있는 모든 원소를 삭제

  • list 중복 제거
    • 순서를 유지하지 않는 경우
      list(set(listname))
      set 자료형 특징
      1. 중복을 허용하지 않음
      2. set 내부에 있는 값들은 순서가 존재하지 않음
    • 순서를 유지하는 경우
    # dictionary 이용
    list(dict.fromkeys(listname))
    # sorted() 함수 이용
    sorted(set(listname), key = lambda x: listname.index(x))

1546: 평균 오답노트

#import numpy as np
N = int(input())
score = list(map(int, input().split()))
newScore = []

for i in range(N):
  newScore.append(score[i] / max(score) * 100)

# print(np.mean(newScore))
print(sum(newScore) / N)

배열의 경우 새로운 변수 사용을 주저하지 말 것!

10810: 공 넣기

n, m = map(int, input().split())
basket = [ 0 for _ in range(n)]

for _ in range(m):
  i, j, k = map(int, input().split())
  for index in range(i-1, j):
    basket[index] = k

for index in range(n):
  print(basket[index], end=' ')

문제 이해가 되지 않을 경우 다음과 같이 그림을 그려서 이해한다.
image

10813: 공 바꾸기

n, m = map(int, input().split())
basket = [ n for n in range(1, n+1)]

for _ in range(m):
  i, j = map(int, input().split())
  # 파이썬 변수 swap
  basket[i-1], basket[j-1] = basket[j-1], basket[i-1]
  # temp 이용 변수 바꾸기
  # temp = basket[i-1]
  # basket[i-1] = basket[j-1]
  # basket[j-1] = temp

for index in range(n):
  print(basket[index], end=' ')

10811 바구니 뒤집기

n, m = map(int, input().split())
basket = [n for n in range(1, n + 1)]

for _ in range(m):
  i, j = map(int, input().split())
  # 슬라이싱, reverse 이용
  temp = basket[i-1:j]
  temp.reverse()
  basket[i-1:j] = temp

for index in range(n):
  print(basket[index], end=' ')
  • 배열 슬라이싱, reverse 함수
    list.reverse(), 파라미터❌, 배열 전체가 역순 배치
profile
Full-Stack Engineer

0개의 댓글