코딩테스트

[Swift 알고리즘] BOJ 2475 - 검증수

유정주 2021. 9. 1. 00:10
반응형

[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가 아직 낯선 것 같습니다.

열심히 해야겠네요.

 


아직은 초보 개발자입니다.

더 효율적인 코드 훈수 환영합니다!

공감 댓글 부탁드립니다.

반응형