일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- windosws wbcs
- C
- OSI
- 미로 탐색 알고리즘
- 파이썬
- 정렬 알고리즘
- web
- 암호수학
- 두근두근 자료구조
- 재귀
- 큐
- ftz level13
- c언어
- pwnable.kr
- level13
- LoB
- Stack
- System
- 시간복잡도
- 자료구조
- ftz
- 파일 시스템
- Java
- War Game
- windosw 문자열
- HTML
- SWiFT
- 백준
- PHP
- 스택
Archives
- Today
- Total
나의 기록, 현진록
[Swift] 프로그래머스 코딩테스트 연습> 연습문제 > 점 찍기 본문
Programming/Algorithm & Data Structure
[Swift] 프로그래머스 코딩테스트 연습> 연습문제 > 점 찍기
guswlsdk 2023. 1. 5. 18:10반응형
풀이
0부터 d만큼의 이중 포문으로 구현을 했으나 d의 최댓값이 백만이면 시간 복잡도가 백만의 제곱이 되어버린다...시간초과 발생
점의 위치가 거리 d 만큼의 길이 내에 있어야 한다.
피타고라스 정의 d^2 = x^2 + y^2 를 이용하면 두개만 알면 나머지 하나를 구할 수 있다.
d는 기본 값으로 주어지고 x는 포문으로 값을 받으면 단일 포문으로 y를 구할 수 있게 된다.
sqrt(d^2 - x^2)은 y의 최댓값이 되고 y또한 k의 배수이기 때문에 k만큼 나누어 갯수를 구한다.
코드
func solution(_ k:Int, _ d:Int) -> Int64 {
var count: Int64 = 0
let result = d * d
for i in stride(from: 0, through: d, by: k){
let x = i * i
count += Int64(Int(sqrt(Double(result - x))) / k + 1)
}
return count
}
반응형
'Programming > Algorithm & Data Structure' 카테고리의 다른 글
[Swift] 프로그래머스 코딩테스트 연습>2022 KAKAO TECH INTERNSHIP > 두 큐 합 같게 만들기 (0) | 2023.03.20 |
---|---|
[Swift] 프로그래머스 코딩테스트 연습> 연습문제> 기사단원의 무기 (0) | 2023.01.05 |
[Swift] 프로그래머스 코딩테스트 연습> 연습문제> 푸드 파이트 대회 (0) | 2023.01.04 |
[Swift] 프로그래머스 2021 카카오 채용연계형 인턴십 > 거리두기 확인하기 (0) | 2022.08.25 |
[Swift] 프로그래머스 코딩테스트 연습 > 2018 KAKAO BLIND RECRUITMENT [1차] 뉴스 클러스터링 (0) | 2022.08.23 |