๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“– Problem Solution

[Swift] ๋ฐฑ์ค€ while๋ฌธ 1,2,3๋ฒˆ

by Fomagran ๐Ÿ’ป 2020. 2. 1.
728x90
๋ฐ˜์‘ํ˜•

1.์ž…๋ ฅ์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” ํ•œ ์ค„๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์œผ๋ฉฐ, ๊ฐ ์ค„์— A์™€ B๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (0 < A, B < 10)

์ž…๋ ฅ์˜ ๋งˆ์ง€๋ง‰์—๋Š” 0 ๋‘ ๊ฐœ๊ฐ€ ๋“ค์–ด์˜จ๋‹ค.

๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋งˆ๋‹ค A+B๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

ํ•ต์‹ฌ:x,y๋ฅผ ์ •ํ•ด๋†“๊ณ  while๋ฌธ์— x์™€ y๊ฐ€ 0์ด๋˜๋ฉด while๋ฌธ์ด ๋ฉˆ์ถ”๊ฒŒ ํ•œ๋‹ค. 

import Foundation

var x : Int?
var y : Int?

while x != 0 && y != 0 {
    let line = readLine()!
    let linearr = line.components(separatedBy: " ")
    let a = Int(linearr[0])!
    let b = Int(linearr[1])!
    if a == 0 && b == 0{
        x = 0
        y = 0
    } else{
         print(a+b)
    }
   
    
}

2.์ž…๋ ฅ์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” ํ•œ ์ค„๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์œผ๋ฉฐ, ๊ฐ ์ค„์— A์™€ B๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (0 < A, B < 10)

๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋งˆ๋‹ค A+B๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

ํ•ต์‹ฌ: ๋„ˆ EOF์•„๋ƒ? ๋ฌดํ•œ๋ฃจํ”„๋Œ๋ฉด ์–ด๋–ป๊ฒŒ ๋ฉˆ์ถœ๋ž˜? ์˜์™ธ๋กœ ๊ฐ„๋‹จํ–ˆ๋‹ค. readLine()์ž์ฒด๋ฅผ true์ธ์ง€ false์ธ์ง€ ํŒ๋‹จํ•˜๋ฉด ๋๋‹ค. EOF๋ž€ End Of File์˜ ์•ฝ์ž๋กœ ๋์— ๋„๋‹ฌํ–ˆ์„ ๋•Œ๋Š” ๋๋‚ผ ์ˆ˜ ์žˆ์–ด์•ผํ•œ๋‹ค.

import Foundation

while let line = readLine() {
    let linearr = line.components(separatedBy: " ")
    let a = Int(linearr[0])!
    let b = Int(linearr[1])!
    print(a+b)
        
}

3.0๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 99๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ •์ˆ˜๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—ฐ์‚ฐ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋จผ์ € ์ฃผ์–ด์ง„ ์ˆ˜๊ฐ€ 10๋ณด๋‹ค ์ž‘๋‹ค๋ฉด ์•ž์— 0์„ ๋ถ™์—ฌ ๋‘ ์ž๋ฆฌ ์ˆ˜๋กœ ๋งŒ๋“ค๊ณ , ๊ฐ ์ž๋ฆฌ์˜ ์ˆซ์ž๋ฅผ ๋”ํ•œ๋‹ค. ๊ทธ ๋‹ค์Œ, ์ฃผ์–ด์ง„ ์ˆ˜์˜ ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ ์ž๋ฆฌ ์ˆ˜์™€ ์•ž์—์„œ ๊ตฌํ•œ ํ•ฉ์˜ ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ ์ž๋ฆฌ ์ˆ˜๋ฅผ ์ด์–ด ๋ถ™์ด๋ฉด ์ƒˆ๋กœ์šด ์ˆ˜๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ๋‹ค์Œ ์˜ˆ๋ฅผ ๋ณด์ž.

26๋ถ€ํ„ฐ ์‹œ์ž‘ํ•œ๋‹ค. 2+6 = 8์ด๋‹ค. ์ƒˆ๋กœ์šด ์ˆ˜๋Š” 68์ด๋‹ค. 6+8 = 14์ด๋‹ค. ์ƒˆ๋กœ์šด ์ˆ˜๋Š” 84์ด๋‹ค. 8+4 = 12์ด๋‹ค. ์ƒˆ๋กœ์šด ์ˆ˜๋Š” 42์ด๋‹ค. 4+2 = 6์ด๋‹ค. ์ƒˆ๋กœ์šด ์ˆ˜๋Š” 26์ด๋‹ค.

์œ„์˜ ์˜ˆ๋Š” 4๋ฒˆ๋งŒ์— ์›๋ž˜ ์ˆ˜๋กœ ๋Œ์•„์˜ฌ ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ 26์˜ ์‚ฌ์ดํด์˜ ๊ธธ์ด๋Š” 4์ด๋‹ค.

N์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, N์˜ ์‚ฌ์ดํด์˜ ๊ธธ์ด๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ฒซ์งธ ์ค„์— N์ด ์ฃผ์–ด์ง„๋‹ค. N์€ 0๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 99๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ •์ˆ˜์ด๋‹ค.

์ฒซ์งธ ์ค„์— N์˜ ์‚ฌ์ดํด ๊ธธ์ด๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

ํ•ต์‹ฌ: 1.๋‘์ž๋ฆฌ ์ˆ˜์—์„œ 1์˜ ์ž๋ฆฌ ์ˆ˜์™€ 10์˜์ž๋ฆฌ ์ˆ˜ ๋”ฐ๋กœ ๋ถ„๋ฆฌํ•˜๊ธฐ - /์™€ %์ด์šฉ
2.๋ฐ˜๋ณต ํ•˜๋‹ค๊ฐ€ ์ž…๋ ฅ์ด ์ฒ˜์Œ ๋‘์ž๋ฆฌ ์ˆ˜๋ผ๋ฉด ์ž…๋ ฅ ๋ฉˆ์ถ”๊ธฐ ,๋งจ ์ฒ˜์Œ ์ˆ˜๋Š” ์–ด๋–ป๊ฒŒ ๊ธฐ์–ตํ•˜๋Š”๊ฐ€? - linea์™€ lineb๋ฅผ ๋งŒ๋“ค์–ด 10์˜์ž๋ฆฌ์™€ 1์˜ ์ž๋ฆฌ๋ฅผ ๋”ฐ๋กœ ๊ธฐ์–ตํ•ด๋‘ . 

3.count๋ผ๋Š” ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด๋†“๊ณ  ์‚ฌ์ดํด๋งˆ๋‹ค +1์ด ๋˜๊ฒŒ ํ•ด์ค€๋‹ค. ๋์— -1์„ ํ•ด์ฃผ๋Š” ์ด์œ ๋Š” ๋งˆ์ง€๋ง‰์— ์ฒ˜์Œ๊ณผ ๋˜‘๊ฐ™์€ ์ˆ˜๊ฐ€ ๋‚˜์˜ค๋”๋ผ๋„ ํ•œ๋ฒˆ ๋”ํ•˜๊ณ  ๋๋‚˜๊ธฐ ๋•Œ๋ฌธ์— count๊ฐ€ ์˜ฌ๋ผ๊ฐ€๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋” ์ข‹์€ ์ฝ”๋“œ๋ผ๋ฉด ์ด๊ฑธ ์—†์• ์•ผํ•˜๋Š”๋ฐ ๊ท€์ฐฎ๋‹ค,

import Foundation

let line = Int(readLine()!)!
var count = 0
var plus : Int?
var linea : Int?
var lineb : Int?
var a : Int?
var b : Int?

while true{
    linea = line/10
    lineb = line%10
    
    if count == 0 {
        a = linea
        b = lineb
        plus = a!+b!
        count += 1
    } else{
        a = b
        b = plus!%10
        plus = a!+b!
        count += 1
    }
    if a == linea && b == lineb && count != 1 {
        print(count-1)
        break
        
    }
    

    }
728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€