백준 [단계별로 풀어보기]: (4단계) "1차원 배열", python
1. 문제번호 및 정답비율

2. 문제별 필요 지식 및 풀이 포인트
# 1. 10807 개수 세기
# 2. X보다 작은 수
# 3. 10818 최소, 최대
map()은 한 번 return 후 빈객체가 되므로, max(), min() 연달아 사용 불가
# 4. 2562 최댓값
TypeError: 'int' object is not callable
예약어(min, max, print 같은거)를 변수명으로 사용하였기 때문
예를 들어 min = min(A)라고 해주는 경우 오류 발생 : del min 해주기
4-1. 선형탐색 세 번((max(a) 2번, a.index() 1번)하는 비효율적 코드
a = [int(input()) for _ in range(9)]
print(max(a), a.index(max(a)) + 1)
4-2. 선형탐색 한 번 실시하는 미친코드
v_i = [(int(input()), i + 1) for i in range(9)] #[(input,1),(input,2),(input,3), ... ,(input,9)]
print(*max(v_i), sep="\n") #함수를 호출할 때 *가 사용되면' 이는 튜플 언패킹
# 5. 10810 공 넣기
basket[x] = k일때, 0 1 2 1 1로 출력되므로 런타임에러
# 6. 10813 공 바꾸기
# 7. 5597 과제 안 내신 분..?
# 8. 3052 나머지
# 9. 10811 바구니 뒤집기
다시풀어보기: 리스트슬라이싱
basket[i:j]면 i번째 i+1번째 값부터 적용되므로 주의할 것
# 10. 1546 평균
3. 문제별 풀이 코드
# 1. 10807 개수 세기
n = int(input())
num = list(map(int, input().split()))
v = int(input())
counter = 0
if len(num) == n:
for i in range(n):
if v == num[i]:
counter += 1
else:
pass
print(counter)
# 2. X보다 작은 수
n, x = map(int, input().split())
a = list(map(int, input().split()))
result = []
if n == len(a):
for i in range(n):
if a[i] < x:
result.append(a[i])
#print(result) #list[]형태
'''list[]의 값을 빼낼 때, for문을 사용'''
for i in result: #list[] to value
print(i, end=' ')
# 3. 10818 최소, 최대
'''map()은 한 번 return 후 빈객체가 되므로, max(), min() 연달아 사용 불가
n = int(input())
num = map(int, input().split())
min(num)
max(num) #max() iterable argument is empty
'''
#내장함수 max(), min()
n = int(input())
num = list(map(int, input().split())) #항상 list(map())꼴로 사용
print(min(num), max(num), end=' ')
n = int(input())
num = list(map(int, input().split()))
#반복&조건문
n = int(input())
num = list(map(int, input().split()))
max = num[0]
min = num[0]
for i in range(n):
if max < num[i]:
max = num[i]
if min > num[i]:
min = num[i]
print(min, max)
#sort()정렬 후 처음,마지막 값 출력
n = int(input())
num = list(map(int, input().split()))
num.sort()
print(num[0], num[-1])
# 4. 2562 최댓값
'''TypeError: 'int' object is not callable
예약어(min, max, print 같은거)를 변수명으로 사용하였기 때문
예를 들어 min = min(A)라고 해주는 경우 오류 발생 : del min 해주기
'''
#내풀이
array = []
for i in range(9):
n = int(input())
array.append(n)
print(max(array), array.index(max(array))+1) #list.index() : 특정원소의 인덱스값
#선형탐색 세 번((max(a) 2번, a.index() 1번)하는 비효율적 코드
a = [int(input()) for _ in range(9)]
print(max(a), a.index(max(a)) + 1)
#선형탐색 한 번 실시하는 미친코드
v_i = [(int(input()), i + 1) for i in range(9)] #[(input,1),(input,2),(input,3), ... ,(input,9)]
print(*max(v_i), sep="\n") #함수를 호출할 때 *가 사용되면' 이는 튜플 언패킹
# 5. 10810 공 넣기
n, m = map(int, input().split())
basket = [0]*(n) #바구니 공 비우기
for _ in range(m):
i,j,k = map(int, input().split())
for x in range(i, j+1):
basket[x-1] = k #basket[x] = k일때, 0 1 2 1 1로 출력되므로 런타임에러
#print(basket)
for k in basket:
print(k, end=' ')
#a = list(map(int, input().split()))
#for x in range(a[0], a[1]+1): basket[x-1] = a[2]로도 가능
# 6. 10813 공 바꾸기
n, m = map(int, input().split())
basket = []
for i in range(1,n+1):
basket.append(i)
#print(basket) : [1,2,3,4,5]
for _ in range(m):
i, j = map(int, input().split())
basket[i-1], basket[j-1] = basket[j-1], basket[i-1]
# basket[i], baeket[j] 시, 2번째 3번째가 교환됨
for i in basket:
print(i, end=' ')
# 7. 5597 과제 안 내신 분..?
'''all_student = []
for i in range(1,31):
all_student.append(i)
student = []
for i in range(28):
submit = int(input())
student.append(submit)
if all_student[i] == student[i]:
all_student.remove(all_student[i])
for i in all_student:
print(i)'''
student = []
for i in range(1,31):
student.append(i)
for i in range(28):
submit = int(input())
student.remove(submit)
for i in student:
print(i)
# 8. 3052 나머지
nums = []
for i in range(10):
num = int(input())
nums.append(num%42)
nums.sort()
count = 1
for i in range(9):
if nums[i] < nums[i+1]:
count += 1
print(count)
# 9. 10811 바구니 뒤집기
'''다시풀어보기: 리스트슬라이싱'''
n, m = map(int, input().split())
basket = [] # [1,2,3,4,5]
for i in range(1,n+1):
basket.append(i)
for _ in range(m):
i, j = map(int, input().split())
rev = basket[i-1:j] #basket[i:j]면 i번째 i+1번째 값부터 적용되므로 주의할 것
rev.reverse() #rev.sort(reverse=True)쓰면, 1 4입력에서 4 3 2 1 5로 뜸
basket[i-1:j] = rev
#print(basket)
for i in basket:
print(i, end=' ')
# 10. 1546 평균
n = int(input())
score = list(map(int, input().split()))
m = max(score)
total = [(i/m)*100 for i in score]
print(sum(total)/n)
'PS > BOJ : 단계별로 풀어보기' 카테고리의 다른 글
| 백준 [단계별로 풀어보기]: (6단계) "심화 1", python (2) | 2024.08.22 |
|---|---|
| 백준 [단계별로 풀어보기]: (5단계) "문자열", python (0) | 2024.08.20 |
| 백준 [단계별로 풀어보기]: (3단계) "반복문", python (2) | 2024.08.17 |
| 백준 [단계별로 풀어보기]: (2단계) "조건문", python (1) | 2024.08.17 |
| 백준 [단계별로 풀어보기]: (1단계) "입출력과 사칙연산", python (1) | 2024.08.01 |