가위바위보 게임을 만들어 보는 와중에 오류 해결한 내용을 모아 정리해봤다.Type 오류컴퓨터의 랜덤으로 가위바위보를 설정하는 코드를 만들던 중 Rps 파일을 상속받아 rawValue를 통해 랜덤으로 선택하도록 구현한 코드를 짜봤다.var comChoice: Rps = Rps(rawValue: 0...2)! 로 설정했더니 하단과 같은 오류가 나타났다.Cannot convert value of type 'ClosedRange' to expected argument type 'Int’고민 끝에 문법 자체가 잘못 지정되어있는 것을 깨달았다. Int가 빠져있던 것이었다.var comChoice: Rps = Rps(raValue: Int.random(in: 0...2)) 로 수정해봤더니 정상적으로 랜덤한 컴퓨터 선..
문제 설명 String형 배열 seoul의 element중 "Kim"의 위치 x를 찾아, "김서방은 x에 있다"는 String을 반환하는 함수, solution을 완성하세요. seoul에 "Kim"은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니다. func solution(_ seoul:[String]) -> String { guard let index = seoul.firstIndex(of: "Kim") else { return "김서방을 찾을 수 없습니다." } return "김서방은 \(index)에 있다" }seoul 이라는 배열 내 Kim 을 찾기 위해선 배열 내 인덱스를 찾아 출력하는 메서드를 사용하면 된다. 해당 메서드는 .firstIndex(of:)로 주어진 요소(Kim)의 ..
오늘은 슬라이드를 이용한 시간 설정 후 시간이 다되면 특정한 소리를 내어 알려주는 미니 프로젝트를 진행하였다. 처음 배우는 타이머 구현 및 사운드 플레이와 같은 내용은 구글링을 통해 특정 키워드를 알아내고 알아낸 키워드를 바탕으로 재검색하여 사용할 수 있는 코드를 찾는 방법을 통해 접근하였다. 사운드플레이 사운드플레이를 사용하기 위에선 먼저 새로운 프레임워크를 선언해야한다. import AVFoundation 그 후 어떠한 작업 후 소리가 나기를 원하는 함수 내 하단의 코드를 입력하면 입력한 사운드가 나오게 된다. @IBAction func startButtonTapped(_ sender: UIButton) { AudioServicesPlayAlertSound(SystemSoundID(1322)) } 상..
문제 설명 1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될 때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다. 1-1. 입력된 수가 짝수라면 2로 나눕니다. 1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다. 2. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다. 예를 들어, 주어진 수가 6이라면 6 → 3 → 10 → 5 → 16 → 8 → 4 → 2 → 1 이 되어 총 8번 만에 1이 됩니다. 위 작업을 몇 번이나 반복해야 하는지 반환하는 함수, solution을 완성해 주세요. 단, 주어진 수가 1인 경우에는 0을, 작업을 500번 반복할 때까지 1이 되지 않는다면 –1을 반환해 주세요. func sol..
문제 설명 두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요. 예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다. 먼저 내가 적은 답은 for 문을 사용하여 답을 구하고 싶었다. var sum: Int64 = 0 for i in a...b { sum += Int64(i) } return suma 에서 b까지 반복해서 설정한 후 i 변수에 담아 다 더하면 sum이 나와 문제가 해결 될 것으로 예측하였다. 하지만 테스트 결과, 56점으로 반은 맞게 되었으나, 반이나 오답이었다. 문제와 맞는 식을 제대로 혼자 작성한 것 같아 기분이 너무 좋았지만 결과가 따라오지 못해 내심 아쉬웠다. func solut..
문제 설명 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요. func solution(_ x:Int) -> Bool { let digits = String(x) var sum = 0 for i in digits { if let digit = Int(String(i)) { sum += digit } } if x % sum == 0 { return true } return false } 먼저 정수를 쪼개 합을 구하기 위해 digits 라는 상수를 선언하여 정수 x 를 String으로 ..