[Swift 알고리즘] BOJ 2475 - 검증수
안녕하세요. 개발 중인 정주입니다.
오늘은 BOJ 2475번 검증수 문제를 풀어보았습니다.
Github
https://github.com/jeongju9216/swiftAlgorithm
문제 정보
번호, 이름 : 2475 검증수
분류 : 수학, 구현, 사칙연산
문제 링크
https://www.acmicpc.net/problem/2475
풀이
2475번 검증수는 단순 계산 문제입니다.
5개의 input값마다 제곱해서 더한 뒤 마지막에 10으로 나눈 나머지를 출력하면 됩니다.
입력의 범위는 00000 ~ 99999까지 이므로 Big Integer 고민도 하지 않아도 됩니다.
마지막 검증으로 가장 예외적이라고 생각할 수 있는 00000 입력이 제대로 동작하는지 확인하면 될 것 같습니다.
참고로 pow()를 사용하시려면 import Foundation을 꼭 넣어주세요.
넣지 않고 제출하면 컴파일 에러가 발생합니다!
1차 코드
import Foundation
let input = readLine()!.split(separator: " ").map{ Int(String($0))! }
var sum = 0
for value in input {
sum = sum + Int(pow(Double(value), 2))
}
print(sum % 10)
메모리 : 79168 KB
시간 : 16 ms
코드 길이 : 199 Byte
시간이 16ms로 오래 걸린다고 생각해 재시도하였습니다.
2차 코드
import Foundation
//2475 검증수
let input = readLine()!.split(separator: " ").map{ Int(String($0))! }
var sum = 0
for value in input {
sum = sum + (value * value)
}
print(sum % 10)
메모리 : 79168 KB
시간 : 16 ms
코드 길이 : 188 Byte
pow() 메서드를 사용하지 않고 제출해보았습니다.
하지만 코드 길이만 개선이 되고 메모리, 시간은 그대로였습니다.
최종 코드
//2475 검증수
let input = readLine()!.split(separator: " ").map{ Int(String($0))! }
var sum = 0
for value in input {
sum = sum + (value * value)
}
print(sum % 10)
메모리 : 62232 KB
시간 : 8 ms
코드 길이 : 170 Byte
그렇습니다.
import Foundation이 메모리와 시간을 낭비하고 있었습니다.
안 그래도 C++ 보다 시간이 느린 언어인데 최대한 시간을 단축하고 싶은 욕심에 이것저것 시도해 보았는데요.
import문이 문제가 될지는 몰랐네요.
또 하나 배웠습니다.
마무리 인사
오랜만에 알고리즘을 풀고 새로운 언어로 접근하니
쉬운 문제도 굉장히 어렵게 느껴집니다.
C++로 풀었다면 금방이었을 텐데 Swift가 아직 낯선 것 같습니다.
열심히 해야겠네요.
아직은 초보 개발자입니다.
더 효율적인 코드 훈수 환영합니다!
공감과 댓글 부탁드립니다.