반응형
1. 랜덤하게 1~9 사이의 숫자 3개를 뽑는다. (중복금지)
2. 사용자로부터 1~9 사이의 숫자 3개를 입력받는다.
3. 위치와 숫자가 모두 일치하면 S, 숫자는 일치하지만 위치가 다를 경우 B를 출력하도록 한다.
정답이 [3, 9, 7]이고 사용자가 [3, 7, 5]를 입력했다면 "1S 1B" 을 출력한다.
지난번 포스팅한 Set을 이용하여 문제를 풀어보겠습니다.
1. 정답 숫자를 저장할 공간과, 중복없이 랜덤하게 뽑은 숫자를 저장할 공간을 만듭니다.
var answer_numbers:[Int] = []
var temp_numbers:Set<Int> = []
2. 랜덤하게 1~9 사이의 숫자 3개를 뽑아 temp_numbers에 넣습니다.
숫자의 중복을 제거하고자 .count의 수가 3이 될 때 까지 while문을 반복하도록 하였습니다.
while temp_numbers.count < 3 {
var number = Int.random(in: 1...9)
temp_numbers.insert(number)
}
3. temp_numbers에 저장된 값을 answer_numbers에 넣어줍니다.
answer_numbers = Array<Int>(temp_numbers)
4. S와 B를 카운트하기 위한 변수를 선언하고 초기화합니다.
var s_count = 0
var b_count = 0
5. 사용자가 입력한 숫자를 저장할 공간을 만듭니다.
var user_numbers:[Int] = []
6. 사용자로부터 숫자 3개를 입력 받습니다.
for _ in 0...2{
user_numbers.append(Int(readLine()!)!)
}
7. 정답과 입력값이 숫자와 위치가 모두 일치하면 S의 카운트를 올리고, 위치는 다르지만 숫자가 일치하면 B를 카운트합니다.(contains() 사용)
for index in 0...2{
if user_numbers[index] == answer_numbers[index]{
s_count += 1
}else if answer_numbers.contains(user_numbers[index]){
b_count += 1
}
}
8. S가 3이 되면 while문을 빠져나오고 "정답입니다"를 출력합니다.
print ("\(s_count)S \(b_count)B")
if s_count == 3{
print("정답입니다.")
break
}
전체코드는 다음과 같습니다.
import Foundation
var answer_numbers:[Int] = []
var temp_numbers:Set<Int> = []
while temp_numbers.count < 3 {
var number = Int.random(in: 1...9)
temp_numbers.insert(number)
}
answer_numbers = Array<Int>(temp_numbers)
while true{
var s_count = 0
var b_count = 0
var user_numbers:[Int] = []
for _ in 0...2{
user_numbers.append(Int(readLine()!)!)
}
for index in 0...2{
if user_numbers[index] == answer_numbers[index]{
s_count += 1
}else if answer_numbers.contains(user_numbers[index]){
b_count += 1
}
}
print ("\(s_count)S \(b_count)B")
if s_count == 3{
print("정답입니다.")
break
}
}
입력과 출력
8
5
3
1S 1B
9
5
3
1S 0B
6
8
3
3S 0B
정답입니다.
반응형
'프로그래밍 언어 > Swift' 카테고리의 다른 글
[Swift] 함수 Function (0) | 2019.07.04 |
---|---|
[Swift] 튜플 tuple (0) | 2019.07.04 |
[Swift] 셋 Set (0) | 2019.07.01 |
[Swift] 로또 번호 추출기 random(), flag, contains, sorted() (1) | 2019.07.01 |
[Swift] reduce()를 이용한 배열 값 더하기 (0) | 2019.06.30 |