본문 바로가기

Codility13

[Swift 알고리즘] Codility lesson5 - GenomicRangeQuery 안녕하세요 코코종입니다. 간~~만에 코딜리티 문제를 풀러 왔어효.. (진짜 너무 오랜만이네 나레기...) 몇 문제에서 느끼긴 했지만 역시 코딜리티 문제가 프로그래밍적 사고를 하는데 도움을 많이 주는거 같아요(맞왜틀?? 이러면서) 물론 연속적으로 풀지 않으면 또 까먹어버리는 나레기... 처음에 문제 이해가 가지 않아서 간단하게 문제 요약을 하겠습니다. ACGT라는 유전자 뭐시기(나름 생2 했었는데 기억이 안나요 이름...)가 있는데 각각 1,2,3,4를 갖는다고 하네요 이때 P와 Q가 주어지는데 (여기가 첨에 뭔말인가 했네요...) DNA를 자를때 그 범위를 알려준다고 보면 됩니다. P[k]...Q[k] 까지로 자른다! 이렇게요 그 잘라진 DNA에서의 가장 작은 값을 (A가 1 이런식으로요!) 순서대로 배.. 2023. 3. 8.
[Swift 알고리즘] Codility lesson5 - CountDiv 안녕하세여 코코종입니다 > Int { // A에서 B사이에서 K로 나눌 수 있는 애들의 갯수를 리턴한다. // idea: 처음으로 K로 나눠지는걸 찾는다 -> 그담에 그담에 B이하에서 가능한 갯수를 구한다 // 어랏? 1~B 한 다음에 1~A-1 을 빼면 될지도? let b: Int = B / K let a: Int = (A-1) / K return b - a } 네.. 어림도 없었습니다. 제가 놓친 케이스는 바로 A가 0인 경우였는데요... 저는 (A-1) / K 를 했기 때문에 0일때 K의 mod는 0임에도 불구하고 제가 포함시키지를 못했네여 ㅎㅎ.. 그래도 답은 간결하게 나와서 기분이 좋았습니닷! import Foundation import Glibc // you can write to stdout.. 2023. 1. 10.
[Swift 알고리즘] Codility lesson5 - PassingCar 안녕하세요 코코종입니다! 이번에는 lesson 5 - Prefix sum으로 넘어왔습니당 이 문제는 대체.... 설명이 너무 이해가 안가서 오래걸린 문제입니다 ㅠㅠㅠ 간단 설명 갑니다. 0 은 >, 1은 > < 가 되는데요 이때 0번의 차는 자기랑 마주오는 3대의 차를 만납니다(1, 3, 4), 또 2번의 차는 3,4 번의 마주오는 차를 만나게 되면서 총 5번을 만난다! 이말입니다. 실제로 문제를... 한 3번 읽어도 뭔소린가해서(index라는 식으로 표현해둬서 저는 그 자리에 차가 있다는줄 알았네요) 다른 블로그 글을 참고해서 이해했습니다. 먼저 처음에 틀린 방법입니다(사실 시간 초과일거 알고 있었지만..!) 말그대로 0을 만날때 그보다 뒤에 있.. 2022. 12. 11.
[Swift 알고리즘] Codility lesson4 - MissingInteger 안녕하세요 코코종입니닷 오늘은 lesson4의 마지막! 문제입니다 큐ㅠㅠㅠ 분명 처음에 코딜리티 시작할때는 '뭐야 한달이면 다풀고 남겠네~~' 했는데 어림도 없쥬? 37문제나 남았네요...이제 10문제 푼거였어요 하... 나레기 이번 문제는 배열에서 주어진 수 중에서 중간에 빈 가장 작은 양수의 Int를 구하는 문제였습니다. 특이한 점이 있다면 빈 공간이 없다면 제일 큰 수보다 1만큼 큰 수를 return해야하고 배열에는 음수도 있더라구여... 그래서 처음에 풀었을때에는 음수에 대한 처리를 너무 간단하게 생각해서 runTimeErrorr가 발생했답니다.(여러분도 왜일지 생각해보세영) 제 아이디어는 O(N)으로 해야하니까 For문을 최대한 다시 도는 한이 있더라도 O(n*N)을 만들어서 통과하는것이었습니다.. 2022. 12. 7.
[Swift 알고리즘] Codility lesson4 - MaxCounters 안녕하세요 코코종입니다 오늘 푼(사실은 어제 풀었는데 77퍼만 맞아서 답을 봐버린) 문제는 MaxCounters입니다. A에서 N보다 이하의 수가 등장하면 배열에서 해당 숫자의(index-1) 값을 1만큼 올려주고 N+1이 등장하면 배열의 가장 큰 값으로 모든 배열을 바꿔주는 동작을 할 때 결과 배열을 답으로 제출하는 것이 문제입니다. 처음에 든 생각은 너무 쉬워서 거의 구현문제라고 생각했는데 역시나... 틀렸습니당^^ 문제 그대로 작업했더니 큰수에서 시간 복잡도에서 걸리더라구요... 그래서 수정을 쪼금 한 버전은 N+1에서 모든 배열의 값을 다 바꿔주는게 아니라 그냥 새로운 배열( Array(repeating: maxValue, count: N))으로 덮어써버리는 것이었는데요... Array(repea.. 2022. 12. 7.
[Swift 알고리즘] Codility lesson4 - PermCheck 안녕하세요 코코종입니다. 어우... 너무 간만에 돌아왔군요.. ㅋㅋㅋㅋ 진짜로 바빴습니다(암튼 진짜임) 요번 문제는 N의 크기를 가지는 배열을 주고 그것이 permutation 한지 확인하는 것이었는데요 쉽게 말해서 1~N까지의 숫자를 모두 가지고 있는지 판단하는 문제였어요 저는 배열을 돌면서 dictionary에 해당 키의 값을 1로 만들어서 체크했습니다 이후 다시 N번을 돌며 중간에 하나라도 빠져있다면 0(false)를 리턴하도록 구현했습니다. import Foundation import Glibc // you can write to stdout for debugging purposes, e.g. // print("this is a debug message") public func solution(.. 2022. 12. 6.