def count_rooms(x):
global answer
for i in range(1, 7):
if x[i] > 0:
q = x[i] // K
r = x[i] % K
answer += q
if r > 0:
answer += r
return answer
N, K = map(int, input().split()) # 학생 수, 최대 인원 수
fStudents = [0 for _ in range(7)] # 학년별 여학생 수
mStudents = [0 for _ in range(7)] # 학년별 남학생 수
answer = 0
for _ in range(N):
S, Y = map(int, input().split())
if S == 0:
fStudents[Y] += 1
else:
mStudents[Y] += 1
count_rooms(fStudents)
count_rooms(mStudents)
print(answer)
학생 수 // 최다 인원 수
와 나머지가 있으면 학생 수 % 최다 인원 수
를 더함N, K = map(int, input().split()) # 학생 수, 최대 인원 수
students = []
for _ in range(N):
S, Y = map(int, input().split())
students.append((S, Y))
sSet = set(students)
sameSY = []
for i in sSet:
cnt = 0
for j in range(N):
if students[j] == i:
cnt += 1
sameSY.append(cnt)
# print(sameSY)
answer = 0
for i in range(len(sameSY)):
answer += ((sameSY[i] // K) + (sameSY[i] % K))
print(answer)
sameSY
에 추가sameSY
길이만큼 최다 인원 수로 나눈 몫과 나머지를 더함학생 수를 최다 인원 수로 나눴을 때 몇 명이 남았는지와 상관없이 방은 1개만 추가된다.
⇒ 학생 수 % 최다 인원 수
를 더하는 게 아니라 1
만 더하면 된다.
N, K = map(int, input().split()) # 학생 수, 최대 인원 수
students = [[0] * 7 for _ in range(3)] # 행: 성별, 열: 학년
for _ in range(N):
S, Y = map(int, input().split())
students[S][Y] += 1
rooms = 0
for i in students:
for j in i:
if j % K == 0:
rooms += j // K
else: # 남은 사람이 있으면 방 하나만 더 하면 된다
rooms += (j // K) + 1
print(rooms)
def count_rooms(x):
global answer, K
for i in range(1, 7):
if x[i] > 0:
if x[i] % K == 0:
answer += x[i] // K
else:
answer += (x[i] // K) + 1
return answer
N, K = map(int, input().split()) # 학생 수, 최대 인원 수
fStudents = [0 for _ in range(7)] # 학년별 여학생 수
mStudents = [0 for _ in range(7)] # 학년별 남학생 수
answer = 0
for _ in range(N):
S, Y = map(int, input().split())
if S == 1:
mStudents[Y] += 1
else:
fStudents[Y] += 1
count_rooms(fStudents)
count_rooms(mStudents)
print(answer)
N, K = map(int, input().split()) # 학생 수, 최대 인원 수
students = []
for _ in range(N):
S, Y = map(int, input().split())
students.append((S, Y))
sSet = set(students)
sameSY = []
for i in sSet:
cnt = 0
for j in range(N):
if students[j] == i:
cnt += 1
sameSY.append(cnt)
# print(sameSY)
answer = 0
for i in range(len(sameSY)):
answer += (sameSY[i] // K)
if sameSY[i] % K != 0:
answer += 1
print(answer)
N, K = map(int, input().split()) # 학생 수, 최대 인원 수
students = [[0] * 7 for _ in range(3)] # 행: 성별, 열: 학년
for _ in range(N):
S, Y = map(int, input().split())
students[S][Y] += 1
rooms = 0
for i in students:
for j in i:
rooms += ((j // K) + (j % K))
print(rooms)
#학생 수: N, 최대 배정 인원 : k
N , k = map(int, input().split())
cnt = [[0,0,0,0,0,0],[0,0,0,0,0,0]]
result = 0
for i in range(N):
sex , grade = map(int, input().split())
cnt[sex][grade - 1] += 1
for i in cnt :
for j in i:
if j % k == 0:
result += j//k
else:
result += (j//k) + 1
print(result)
입력이 2가지 종류로 구분될 때, 2차원 배열을 사용하면 된다.
예를 들어, 위의 문제와 같이 성별과 학년으로만 데이터를 분류하면 될 때는 행: 성별, 열: 학년
과 같이 [[0] * 7 for _ in range(3)]
으로 입력 리스트를 구성하면 된다.
혈액형까지 3가지면 [[[0] * 4 for _ in range(7)] for _ in range(3)]
...?