백준 단계별 풀기 (1차원배열)
개수세기
1
2
3
4
5
6
7
8
9
10
11
a = int(input())
a_list = list(map(int,input().split()))
b = int(input())
c = 0
for i in range(a):
i += 1
if int(a_list[i-1]) == b:
c += 1
print(c)
수정
1
2
3
4
5
6
7
8
9
a = int(input())
a_list = list(map(int,input().split()))
b = int(input())
c = 0
for i in range(a):
if a_list[i-1] == b:
c += 1
print(c)
X보다 작은 수
1
2
3
4
5
6
7
a, X = map(int, input().split())
a_list = list(map(int,input().split()))
for i in range(a):
if a_list[i] < X:
print(a_list[i], end = " ")
최소값, 최대값
1
2
3
4
5
6
7
8
9
10
11
12
13
a = int(input())
c = list(map(int, input().split()))
ma = c[0]
mi = c[0]
for i in range(a):
if c[i] < ma:
ma = c[i]
elif c[i] > mi:
mi = c[i]
print(ma,mi)
최대값과 길이
1
2
3
4
5
6
7
8
9
10
num = 0
le = 0
for i in range(9):
a = int(input())
if a > num:
num = a
le = i
print(num)
print(le+1)
공넣기
문제 이해
5 4 1 2 3 3 4 4 1 4 1 2 2 2
이걸 잘보면 n은 바구니의 개수이고 m은 배열의 개수라서 3개의 숫자를 입력받을건데 그건 m번동안 받을 거임
앞의 2개의 숫자는 i~j
까지의 바구니에 k
만큼 공을 넣는다는 뜻임 k가 ` b[i~j] ` 까지가 k
로 대체된다는 말임
그래서 for문을 안에 한 번더 넣어주는데 바깥으로 빼버리면 계속해서 바구니를 업데이트를 안시킴 만약 1~3번바구니에 4를 전부 넣엇는데 4 4 4 0 0 그 다음 던지는 배열이 시작할때 바구니를 업데이트 해줘야함
3~4번바구니에 1을 넣으면 4 4 1 1 0 이 되어야하는데 그걸 못해줌 그냥 배열까지 반복해서 k를 넣고 끝남 그래서 m번의 배열이 반복되는동안 계속 바구니를 업데이트 해줘야하는거임
그리고 num-1을 하는 이유는 i 가 1 j가 2 거기에 +1을 해서 1,3까지가 되었는데 베열은 0부터 시작함 근데 1부터 넣어버리면 꼬이기 때문에 -1을 해주는거임
마지막 출력 반복문은 그냥 b를 출력해버리면 리스트형식으로 출력해버리는데 숫자를 출력해야함 그래서 각 자리수의 숫자를 가져오게 반복하는거임 그리고 end = “ “로 한 줄로 출력해버리게 하는거
n이 5 이면 0,5까지 반복하는데 실제로는 0 1 2 3 4 까지임 그래서 o가 0 1 2 3 4가 되고 매번 b의 배열안에 있는 숫자를 가져오는거지
처음에 b를 배열 0 으로 곱해주는것은 아무것도 안들어있다면 0으로 출력해주기 위해서!
1
2
3
4
5
6
7
8
9
10
n, m = map(int,input().split())
b = [0] * n
for _ in range(m):
i, j, k = map(int,input().split())
for num in range(i,j+1):
b[num-1] = k
for o in range(n):
print(b[o], end = " ")
공 바꾸기
먼저 하나의 다른 변수에 i의 번호를 저장해두고 그다음 i를 j로 바꾼다 그 후에 j 를 변수와 같다고 지정하면 j가 지정하고 난 뒤에 바뀌니까 상관 ㄴ
1
2
3
4
5
6
7
8
9
10
11
n, m = map(int, input().split())
b = [a for a in range(1,n+1)]
for _ in range(m):
i, j = map(int, input().split())
re = b[i-1]
b[i-1] = b[j-1]
b[j-1] = re
for num in range(n):
print(b[num], end =" ")
과제 안내신분?
1
2
3
4
5
6
7
8
sub = [i for i in range(1,31)]
for _ in range(28):
a = int(input())
sub.remove(a)
print(min(sub))
print(max(sub))
1부터 30까지의 번호를 sub의 리스트에 넣는다. (a)는 리스트안의 들어있는 숫자중 만약 a가 4라면 4를 삭제한다. ` [] ` 저건 그 배열의 특정 위치
Remove() 메서드는 인덱스가 아닌 값을 인수로 사용. 인덱스 1의 요소를 제거하려면 대신 pop() 메서드나 del 문을 사용할 수 있다 예를 들어:
sub = [3,6,7,8,9,0]
sub.pop(1) # 인덱스 1의 요소를 제거하고 반환.
print(sub) # [3, 7, 8, 9, 0]을 인쇄.
sub = [3,6,7,8,9,0]
del sub1 # 인덱스 1의 요소를 제거.
print(sub) # [3, 7, 8, 9, 0]을 인쇄.
나머지
1
2
3
4
5
6
7
8
a = []
for i in range(10):
b = int(input())
if b % 42 not in a:
a.append(b % 42)
print(len(a))
not in 이 포인트고 append시() 로 하기
바구니 바꾸기
1
2
3
4
5
6
7
8
9
10
11
12
13
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())
temp = basket[i-1:j]
temp.reverse()
basket[i-1:j] = temp
for i in range(N):
print(basket[i], end=" ")
게임은 거꾸로 바꾸는 거임 1, 4 를 받앗다고 해서 1번부터 4번까지의 숫자가 역순으로 정렬되는게 아니라 1번은 4번이 되고 2번은 3번이 되는 이런식으로 reverse가 되는거임
먼저 temp에 첫번째 i가 1이고 첫번쨰 j가 4라면 b[1-1:4]가 되는건데 1-1은 0이니까 0:4가 됨 근데 f리스트 슬라이스는 4를 선택하지 않음 0.1.2.3까지임 그래서 j는 +1을 안해줘도 어차피 4니까 상관이 없음 애초에 리스트에는 0.1.2.3.4 까지의 숫자만 있는거임 만약 4를 선택하는거엿다면 j-1을 해줬어야함 무튼 그렇게 0:4라는 값을 temp에 넣고 거꾸로 만들어줌 1 2 3 4 5 첫 바구니가 이거엿다면
1과 4가 거구로 되고 2와 3이 거꾸로 돼서 4 3 2 1 이됨 근데 바구니가 2 1 4 3 5 엿다면 2와 3의 위치를 바꾸고 1과 4의 위치를 바꿔서 3 4 1 2 가 되는거임 무튼 그렇게 거꾸로 만든값을 b[i-1:j]의 값에 넣어줌 다시
평균구하기
1
2
3
4
5
6
7
8
n = int(input())
a = list(map(int, input().split()))
b = max(a)
f = 0
for i in range(n):
f += a[i] / b * 100
print(f / n)