일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 카카오 2020
- Siwft
- Python
- 스위프트
- kakao 2018
- 소수
- Kakao
- fast.ai
- 파이썬
- coco 데이터셋
- 프로그래머스 답
- ios 개발 시작
- 카카오 2019
- 날씨 앱
- roboflow
- swift 시작
- swift
- 카카오 2018
- 문제
- 카카오 2021
- 머신러닝
- 데이터셋 만들기
- SwiftUI
- 프로그래머스
- 이미지학습
- 카카오
- supervisely
- 최솟값 만들기
- swift 배열
- c언어
- Today
- Total
목록[코딩] 문제풀기 (25)
잡초의 일지
코딩테스트를 준비하며 문제를 풀다, 오랜시간 고민한 문제라서 아주 오랜만에 포스팅 한다. 우선, 처음에는 3진법으로 접근하고자 하였다. 10진법 -> 2진법을 구하는것처럼, n진법일 경우, n으로 나눈 몫과 나머지를 활용하는 방안을 생각하였다. 이 경우, 3진법은 (0, 1, 2)를 사용하기 때문에 3(10진수) = 10(3진수)가 된다. 이렇게 생기는 10(3진수)를 4로 바꾸면 되겠다는 생각을 하였다. 더보기 중간에 1로 자리가 올라가는 숫자를 생각하지 못하고 0만 4로 바꿔서 많이 해맸다. 10(3진수)를 4로 바꾸기 위해선, 3으로 나눈 나머지가 0일때, 올라가는 수인 1을 빼주어야 한다. 이것은 3으로 나눈 몫에서 1을 빼주는것과 같다. 또한, 0을 4로 바꾸어 문자열에 넣어준다. 아주 어릴때 ..
처음에는 지금껏 풀어왔던 것과 같이, for문을 반복하며 0으로 나누어 떨어지면 소수로 판별하는 방식으로 풀었다. 더보기 func solution(_ n:Int) -> Int { var count = 1 if n >= 3{ for i in 3...n{ // i가 소수인가 판별 후 count ++ var isPrime = true for j in 2...i-1{ if (i%j == 0){ isPrime = false break } } if (isPrime){ count += 1 } } } return count } 하지만, 아무리 코드를 줄여봐도 시간초과가 났고, 접근방식이 잘못되었다고 생각해 찾아보았다. 소수를 구할 때에 가장 콤펙트한 방법은 에라토스테네스의 채를 활용하는것이라고 한다. (아래의 링크에 ..
Level1 문제는 대부분 쉽게 풀 수 있어 포스팅을 잘 하지 않는데, 이것을 포스팅 하는 이유는 아래와 같다. 나는 처음에 이 문제에 대한 답으로 func solution(_ x:Int, _ n:Int) -> [Int64] { var res:[Int64] = [] var value = x for _ in 0.. [Int64] { var res:[Int64] = [] for i in 1...n{ res.append(Int64(i*x)) } return res } 이렇게 바꾸었다. 사소한 변수선언이었고, 그로인한 복잡하지 않은 연산이 있었지만, 이 작은것 하나도 신경써야 한다는 생각이 들게 했다.
minsone.github.io/mac/ios/swift-advanced-operators-summary [Swift]Advanced Operators 정리 고급 연산자(Advanced Operators) Swift는 더 복잡한 값 조작을 동작하는 몇가지 고급 연산자를 제공한다. 비트 관련 연산자는 C와 Objective-C와 유사하다. Swift에 산술 연산자는 기본적으로 오버플로우를 minsone.github.io 여기 있는것처럼 이진수 연산을 해서 or연산자로 풀려고 했는데, Int를 Int8로 ..(혹은 다른것으로도) 바꾸는 방법을 찾지 못했다.. 십진수를 이진수로 바꾸는 방법들은 모두 문자열을 반환했다. 따라서 마땅한 방법을 찾지 못해, 십진수를 이진수 문자열로 바꾸고, 문자열끼리 비교하기로 하..
func solution(_ N:Int, _ stages:[Int]) -> [Int] { var fail = [[Double]]() var last = 0 var numerator:Double // 분자 var denominator:Double // 분모 var current = stages.count var i = 0 for _ in 1...N { var count = 0 for stage in stages { if (i+1 == stage){ count += 1 } } numerator = Double(count) denominator = Double(current - last) fail.append([Double(numerator/denominator), Double(i+1)]) last = Int..
func solution(_ new_id:String) -> String { func stage1(_ str: String) -> String { // 1단계 new_id의 모든 대문자를 대응되는 소문자로 치환합니다. return str.lowercased() } func stage2(_ str: String) -> String { // 2단계 new_id에서 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.)를 제외한 모든 문자를 제거합니다. var res = str for character in res { switch character { case "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "..
func solution(_ numbers:[Int], _ hand:String) -> String { var result = "" var left_x = 3 var left_y = 0 var right_x = 3 var right_y = 2 func find2darrIndex(_ number: Int) -> (Int, Int) { let keypad = [["1", "2", "3"], ["4", "5", "6"], ["7", "8", "9"], ["*", "0", "#"]] for j in 0..
func solution(_ board:[[Int]], _ moves:[Int]) -> Int { var stack: Array = [] var newBoard = board var count = 0 var j = 0 for _ in moves {// 입력된 moves 만큼 반복해서 해야 함. for i in 0.. 1) {// 전에 들어간 인형과 지금 들어간 인형이 같은지 판별하고 같으면 없앤다. var last = stack[stack.count - 1] var first = stack[stack.count - 2] if (first == last) { stack.popLast() stack.popLast() count += 2 } } break; } } j += 1 } return count } 문..