λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
⌨️ Language/swift

[Swift] λ°±μ€€ 13300번 - λ°© λ°°μ •

by hyebin (Helia) 2023. 3. 25.
λ°˜μ‘ν˜•
λ°±μ€€ 문제 λͺ¨μŒ

문제 링크

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

 

13300번: λ°© λ°°μ •

ν‘œμ€€ μž…λ ₯으둜 λ‹€μŒ 정보가 μ£Όμ–΄μ§„λ‹€. 첫 번째 μ€„μ—λŠ” μˆ˜ν•™μ—¬ν–‰μ— μ°Έκ°€ν•˜λŠ” 학생 수λ₯Ό λ‚˜νƒ€λ‚΄λŠ” μ •μˆ˜ N(1 ≤ N ≤ 1,000)κ³Ό ν•œ 방에 λ°°μ •ν•  수 μžˆλŠ” μ΅œλŒ€ 인원 수 K(1 < K ≤ 1,000)κ°€ 곡백으둜 λΆ„λ¦¬λ˜μ–΄

www.acmicpc.net

 

문제

정보 μ΄ˆλ“±ν•™κ΅μ—μ„œλŠ” λ‹¨μ²΄λ‘œ 2λ°• 3일 μˆ˜ν•™μ—¬ν–‰μ„ κ°€κΈ°λ‘œ ν–ˆλ‹€. μ—¬λŸ¬ ν•™λ…„이 κ°™μ€ μž₯μ†Œλ‘œ μˆ˜ν•™μ—¬ν–‰μ„ κ°€λ €κ³  ν•˜λŠ”λ° 1ν•™λ…„λΆ€ν„° 6ν•™λ…„κΉŒμ§€ ν•™μƒλ“€μ΄ λ¬΅μ„ λ°©μ„ λ°°μ •ν•΄μ•Ό ν•œλ‹€. λ‚¨ν•™μƒμ€ λ‚¨ν•™μƒλΌλ¦¬, μ—¬ν•™μƒμ€ μ—¬ν•™μƒλΌλ¦¬ λ°©μ„ λ°°μ •ν•΄μ•Ό ν•œλ‹€. λ˜ν•œ ν•œ λ°©μ—λŠ” κ°™μ€ ν•™λ…„μ˜ ν•™μƒλ“€μ„ λ°°μ •ν•΄μ•Ό ν•œλ‹€. λ¬Όλ‘  ν•œ λ°©μ— ν•œ λͺ…λ§Œ λ°°μ •ν•˜λŠ” κ²ƒλ„ κ°€λŠ₯ν•˜λ‹€.

ν•œ λ°©μ— λ°°μ •ν•  μˆ˜ μžˆλŠ” μ΅œλŒ€ μΈμ›μˆ˜ Kκ°€ μ£Όμ–΄μ‘Œμ„ λ•Œ, μ‘°κ±΄μ— λ§žκ²Œ λͺ¨λ“  ν•™μƒμ„ λ°°μ •ν•˜κΈ° μœ„ν•΄ ν•„μš”ν•œ λ°©μ˜ μ΅œμ†Œ κ°œμˆ˜λ₯Ό κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

예λ₯Ό λ“€μ–΄, μˆ˜ν•™μ—¬ν–‰μ„ κ°€λŠ” ν•™μƒμ΄ λ‹€μŒκ³Ό κ°™κ³  K = 2일 λ•Œ 12개의 λ°©μ΄ ν•„μš”ν•˜λ‹€. μ™œλƒν•˜λ©΄ 3ν•™λ…„ λ‚¨ν•™μƒμ„ λ°°μ •ν•˜κΈ° μœ„ν•΄ λ°© λ‘ κ°œκ°€ ν•„μš”ν•˜κ³  4ν•™λ…„ μ—¬ν•™μƒμ—λŠ” λ°©μ„ λ°°μ •ν•˜μ§€ μ•Šμ•„도 λ˜κΈ° λ•Œλ¬Έμ΄λ‹€.

μž…λ ₯

ν‘œμ€€ μž…λ ₯으둜 λ‹€μŒ μ •보가 μ£Όμ–΄μ§„λ‹€. μ²« λ²ˆμ§Έ μ€„μ—λŠ” μˆ˜ν•™μ—¬ν–‰μ— μ°Έκ°€ν•˜λŠ” ν•™μƒ μˆ˜λ₯Ό λ‚˜νƒ€λ‚΄λŠ” μ •μˆ˜ N(1 ≤ N ≤ 1,000)κ³Ό ν•œ λ°©μ— λ°°μ •ν•  μˆ˜ μžˆλŠ” μ΅œλŒ€ μΈμ›μˆ˜ K(1 < K ≤ 1,000)κ°€ κ³΅λ°±μœΌλ‘œ λΆ„λ¦¬λ˜μ–΄ μ£Όμ–΄μ§„λ‹€. λ‹€μŒ N κ°œμ˜ κ° μ€„μ—λŠ” ν•™μƒμ˜ μ„±λ³„ S와 ν•™λ…„ Y(1 ≤ Y ≤ 6)κ°€ κ³΅λ°±μœΌλ‘œ λΆ„λ¦¬λ˜μ–΄ μ£Όμ–΄μ§„λ‹€. μ„±λ³„ SλŠ” 0, 1쀑 ν•˜λ‚˜λ‘œμ„œ μ—¬ν•™μƒμΈ κ²½μš°μ— 0, λ‚¨ν•™μƒμΈ κ²½μš°μ— 1둜 λ‚˜νƒ€λ‚Έλ‹€. 

좜λ ₯

ν‘œμ€€ μΆœλ ₯으둜 ν•™μƒλ“€μ„ λͺ¨λ‘ λ°°μ •ν•˜κΈ° μœ„ν•΄ ν•„μš”ν•œ μ΅œμ†Œν•œμ˜ λ°©μ˜ μˆ˜λ₯Ό μΆœλ ₯ν•œλ‹€.

μž…μΆœλ ₯ μ˜ˆμ‹œ

μ•Œκ³ λ¦¬μ¦˜ λΆ„λ₯˜

  • μˆ˜ν•™
  • κ΅¬ν˜„

문제 풀이

  • 1ν•™λ…„λΆ€ν„° 6ν•™λ…„κΉŒμ§€ 6개의 ν•™λ…„κ³Ό 남녀 2개의 방이 μ‘΄μž¬ν•˜κΈ° λ•Œλ¬Έμ— 6*2 2차원 λ°°μ—΄ arrλ₯Ό μƒμ„±ν•œλ‹€.
  • 참가인원 nκ³Ό ν•œ 방에 λ°°μ •ν•  수 μžˆλŠ” μ΅œλŒ€μΈμ› kλ₯Ό μž…λ ₯λ°›λŠ”λ‹€.
  • 성별과 학년을 μž…λ ₯λ°›μ•„ temp에 μ €μž₯ν•œ ν›„ arr[ν•™λ…„-1][성별]에 1을 λ”ν•œλ‹€
  • resultλ³€μˆ˜μ— 각 ν•™λ…„λ³„λ‘œ λ°°μ •λœ 방의 개수λ₯Ό ꡬ해 λ”ν•œλ‹€.
    • i ν•™λ…„μ˜ μ—¬μž ν•™μƒμ˜ 수λ₯Ό k둜 λ‚˜λˆ΄μ„ λ•Œ λ‚˜λ¨Έμ§€κ°€ 0이라면 ν•™μƒμˆ˜μ— kλ₯Ό λ‚˜λˆˆ 값을 result에 λ”ν•˜κ³ , μ•„λ‹ˆλΌλ©΄ ν•™μƒμˆ˜μ— kλ₯Ό λ‚˜λˆˆ 값에 1을 λ”ν•œ ν›„ result λ³€μˆ˜μ— λ”ν•œλ‹€.
    • 남학생도 같은 λ°©λ²•μœΌλ‘œ κ³„μ‚°ν•œλ‹€.

μ†ŒμŠ€μ½”λ“œ

var arr = Array(repeating: [0, 0], count: 6)
let nk = readLine()!.split(separator: " ").map{Int(String($0))!}
let n = nk[0], k = nk[1]
var result = 0

for _ in 0..<n {
    let temp = readLine()!.split(separator: " ").map{Int(String($0))!}
    arr[temp[1]-1][temp[0]] += 1
}

for i in 0..<6 {
    result += (arr[i][0]%k == 0 ? arr[i][0]/k : arr[i][0]/k+1)
    result += (arr[i][1]%k == 0 ? arr[i][1]/k : arr[i][1]/k+1)
}
print(result)
  • 12ms
λ°˜μ‘ν˜•