MUKER_DEV with iOS

[swift] λ°±μ€€ - 11576번: Base Conversion λ³Έλ¬Έ

πŸ€– μ•Œκ³ λ¦¬μ¦˜/BAEKJOON

[swift] λ°±μ€€ - 11576번: Base Conversion

MUKER 2023. 8. 8. 08:36
문제 링크
 

11576번: Base Conversion

νƒ€μž„λ¨Έμ‹ μ„ κ°œλ°œν•˜λŠ” μ •μ΄λŠ” 였랜 λ…Έλ ₯ 끝에 νƒ€μž„λ¨Έμ‹ μ„ κ°œλ°œν•˜λŠ”λ° μ„±κ³΅ν•˜μ˜€λ‹€. λ―Έλž˜κ°€ κΆκΈˆν•œ μ •μ΄λŠ” μžμ‹ μ΄ κ°œλ°œν•œ νƒ€μž„λ¨Έμ‹ μ„ μ΄μš©ν•˜μ—¬ 500λ…„ ν›„μ˜ μ„Έκ³„λ‘œ 여행을 λ– λ‚˜κ²Œ λ˜μ—ˆλ‹€. 500λ…„ ν›„μ˜

www.acmicpc.net


문제

νƒ€μž„λ¨Έμ‹ μ„ κ°œλ°œν•˜λŠ” μ •μ΄λŠ” 였랜 λ…Έλ ₯ 끝에 νƒ€μž„λ¨Έμ‹ μ„ κ°œλ°œν•˜λŠ”λ° μ„±κ³΅ν•˜μ˜€λ‹€. λ―Έλž˜κ°€ κΆκΈˆν•œ μ •μ΄λŠ” μžμ‹ μ΄ κ°œλ°œν•œ νƒ€μž„λ¨Έμ‹ μ„ μ΄μš©ν•˜μ—¬ 500λ…„ ν›„μ˜ μ„Έκ³„λ‘œ 여행을 λ– λ‚˜κ²Œ λ˜μ—ˆλ‹€. 500λ…„ ν›„μ˜ μ„Έκ³„μ—μ„œλ„ ν”„λ‘œκ·Έλž˜λ°μ„ ν•˜κ³  μ‹Άμ—ˆλ˜ μ •μ΄λŠ” λ°±μ€€ μ‚¬μ΄νŠΈμ— μ ‘μ†ν•˜μ—¬ 문제λ₯Ό ν’€κΈ°λ‘œ ν•˜μ˜€λ‹€. κ·ΈλŸ¬λ‚˜ λ―Έλž˜μ„Έκ³„λŠ” A진법을 μ‚¬μš©ν•˜κ³  μžˆμ—ˆκ³ , B진법을 μ‚¬μš©ν•˜λ˜ μ •μ΄λŠ” 문제λ₯Ό ν’€ μˆ˜κ°€ μ—†μ—ˆλ‹€. λ›°μ–΄λ‚œ ν”„λ‘œκ·Έλž˜λ¨Έμ˜€λ˜ μ •μ΄λŠ” Aμ§„λ²•μœΌλ‘œ λ‚˜νƒ€λ‚Έ 숫자λ₯Ό Bμ§„λ²•μœΌλ‘œ λ³€ν™˜μ‹œμΌœμ£ΌλŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜κΈ°λ‘œ ν•˜μ˜€λ‹€.

Nμ§„λ²•μ΄λž€, ν•œ μžλ¦¬μ—μ„œ 숫자λ₯Ό ν‘œν˜„ν•  λ•Œ μ“Έ 수 μžˆλŠ” 숫자의 κ°€μ§“μˆ˜κ°€ Nμ΄λΌλŠ” λœ»μ΄λ‹€. 예λ₯Ό λ“€μ–΄ N이 17일 λ•Œ ν•œ μžλ¦Ώμˆ˜μ—μ„œ μ‚¬μš©ν•  수 μžˆλŠ” μˆ˜λŠ” 0, 1, 2, ... , 16으둜 총 17가지가 λœλ‹€.

μž…λ ₯

μž…λ ₯의 첫 μ€„μ—λŠ” λ―Έλž˜μ„Έκ³„μ—μ„œ μ‚¬μš©ν•˜λŠ” 진법 A와 정이가 μ‚¬μš©ν•˜λŠ” 진법 Bκ°€ 곡백을 κ΅¬λΆ„μœΌλ‘œ 주어진닀. A와 BλŠ” λͺ¨λ‘ 2이상 30μ΄ν•˜μ˜ μžμ—°μˆ˜λ‹€.

μž…λ ₯의 두 번째 μ€„μ—λŠ” Aμ§„λ²•μœΌλ‘œ λ‚˜νƒ€λ‚Έ 숫자의 자리수의 개수 m(1 ≤ m ≤ 25)이 주어진닀. μ„Έ 번째 μ€„μ—λŠ” A진법을 이루고 μžˆλŠ” 숫자 mκ°œκ°€ 곡백을 κ΅¬λΆ„μœΌλ‘œ 높은 μžλ¦Ώμˆ˜λΆ€ν„° μ°¨λ‘€λŒ€λ‘œ 주어진닀. 각 μˆ«μžλŠ” 0이상 Aλ―Έλ§Œμž„μ΄ 보μž₯λœλ‹€. λ˜ν•œ μˆ˜κ°€ 0으둜 μ‹œμž‘ν•˜λŠ” κ²½μš°λŠ” μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ”λ‹€.

Aμ§„λ²•μœΌλ‘œ λ‚˜νƒ€λ‚Έ 수λ₯Ό 10μ§„λ²•μœΌλ‘œ λ³€ν™˜ν•˜μ˜€μ„ λ•Œμ˜ 값은 μ–‘μ˜ μ •μˆ˜μ΄λ©° 220보닀 μž‘λ‹€.

좜λ ₯

μž…λ ₯으둜 주어진 Aμ§„λ²•μœΌλ‘œ λ‚˜νƒ€λ‚Έ 수λ₯Ό Bμ§„λ²•μœΌλ‘œ λ³€ν™˜ν•˜μ—¬ 좜λ ₯ν•œλ‹€.

예제


성곡 풀이

import Foundation
let input = readLine()!.split(separator: " ").map { Int($0)! }
let a = input[0], b = input[1]
let m = Int(readLine()!)!
let array = readLine()!.split(separator: " ").map { Int($0)! }
var num = 0

for (index, arr) in array.enumerated() {
    num += (arr * Int(pow(Double(a), Double(m - index - 1))))
}

var div: [Int] = []
while num >= b {
    div.append(num % b)
    num /= b
}
div.append(num)

print(div.reversed().map { String($0) }.joined(separator: " "))

풀이 ν‚€μ›Œλ“œ

  •