본문 바로가기

분류 전체보기

[Swift] 백준! 2981번 - 검문 https://www.acmicpc.net/problem/2981 2981번: 검문 트럭을 타고 이동하던 상근이는 경찰의 검문을 받게 되었다. 경찰은 상근이가 운반하던 화물을 하나하나 모두 확인할 것이기 때문에, 검문하는데 엄청나게 오랜 시간이 걸린다. 상근이는 시간 www.acmicpc.net import Foundation func gcd(_ a: Int, _ b: Int) -> Int{ if (b == 0) { return a } return gcd(b, a % b) } let n = Int(readLine()!)! var l:[Int] = [] var minv = 1000000000 for _ in 1...n { let num = Int(readLine()!)! l.append(num) if nu..
[Swift] RxSwift RxSwift Every Observable instance is just a sequence 구성 요소 Observable Operator - 연산자/결과 출력/다양한 값으로 변환 가능 Scheduler - 커스텀 할 일 거의 없다고. Observable - 관찰자 Observable Rx 코드의 기반 T 형태의 데이터 snapshot 을 ‘전달’ 할 수 있는 일련의 이벤트를 비동기적으로 생성하는 기능 하나 이상의 observers가 실시간으로 어떤 이벤트에 반응 세 가지 유형의 이벤트만 방출 enum Event { case next(Element) // next element of a sequence case error(Swift.Error) // sequence failed with error ca..
[Swift] DispatchQueue / Serial / Concurrent DispatchQueue 작업 항목의 실행을 관리하는 클래스 애플리케이션에서 작업을 비동기 및 동시에 수행할 수 있게 해주는 GCD 대기열 위에 있는 추상화 계층 일반 스레드 보다 쉽고 효율적으로 코드를 작성할 수 있다. 보통 서버에서 데이터를 받고 이미지 동영상을 외부에서 다운로드 및 처리할 때 CPU 사용량이 많아 처리를 메인 스레드가 아닌 별도의 스레드에서 처리한 뒤 메인 스레드로 결과만을 전달하여 화면에 표시하도록 하여 CPU를 관리할 수 있다. DispatchQueue 의 종류 - Serial / Concurrent Serial Dispatch Queue - 비동기 이전 작업이 끝나면 다음 작업을 순차적으로 실행하는 직렬 형태의 큐. 하나의 작업을 실행하고 그 실행이 끝날 때까지 대기열에 있는 ..
[Swift] 코딩테스트 연습! Lv1. 괄호 변환개인정보 수집 유효기간 /* 개인정보 수집 유효기간 - 고객의 약관 동의를 얻어서 수집된 1~n번으로 분류되는 개인정보 n개가 있습니다. 약관 종류는 여러 가지 있으며 각 약관마다 개인정보 보관 유효기간이 정해져 있습니다. 당신은 각 개인정보가 어떤 약관으로 수집됐는지 알고 있습니다. 수집된 개인정보는 유효기간 전까지만 보관 가능하며, 유효기간이 지났다면 반드시 파기해야 합니다. 예를 들어, A라는 약관의 유효기간이 12 달이고, 2021년 1월 5일에 수집된 개인정보가 A약관으로 수집되었다면 해당 개인정보는 2022년 1월 4일까지 보관 가능하며 2022년 1월 5일부터 파기해야 할 개인정보입니다. 당신은 오늘 날짜로 파기해야 할 개인정보 번호들을 구하려 합니다. 모든 달은 28일까지 있다고 가정합니다. 오늘 날짜를 의미하는..
[Swift] 백준! 1837번 - 암호제작 https://www.acmicpc.net/problem/1837 1837번: 암호제작 원룡이는 한 컴퓨터 보안 회사에서 일을 하고 있다. 그러던 도중, 원룡이는 YESWOA.COM 으로부터 홈페이지 유저들의 비밀키를 만들라는 지시를 받았다. 원룡이는 비밀 키를 다음과 같은 방법으로 www.acmicpc.net import Foundation func mod(_ s:String, _ p:Int) -> Int { var ret = 0 for c in s { ret = (ret*10+Int(String(c))!)%p } return ret } func isPrime(_ num: Int) -> Bool { if(num
[Swift] 코딩테스트 연습! Lv2. [3차] 방금그곡 /* [3차] 방금그곡 - 방금그곡 라디오를 자주 듣는 네오는 라디오에서 방금 나왔던 음악이 무슨 음악인지 궁금해질 때가 많다. 그럴 때 네오는 다음 포털의 '방금그곡' 서비스를 이용하곤 한다. 방금그곡에서는 TV, 라디오 등에서 나온 음악에 관해 제목 등의 정보를 제공하는 서비스이다. 네오는 자신이 기억한 멜로디를 가지고 방금그곡을 이용해 음악을 찾는다. 그런데 라디오 방송에서는 한 음악을 반복해서 재생할 때도 있어서 네오가 기억하고 있는 멜로디는 음악 끝부분과 처음 부분이 이어서 재생된 멜로디일 수도 있다. 반대로, 한 음악을 중간에 끊을 경우 원본 음악에는 네오가 기억한 멜로디가 들어있다 해도 그 곡이 네오가 들은 곡이 아닐 수도 있다. 그렇기 때문에 네오는 기억한 멜로디를 재생 시간과 제공된 악보..
[Swift] 코딩테스트 연습! Lv2. 괄호 변환 /* 괄호 변환 - 카카오에 신입 개발자로 입사한 "콘"은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 컴파일하여 로그를 보니 대부분 소스 코드 내 작성된 괄호가 개수는 맞지만 짝이 맞지 않은 형태로 작성되어 오류가 나는 것을 알게 되었습니다. 수정해야 할 소스 파일이 너무 많아서 고민하던 "콘"은 소스 코드에 작성된 모든 괄호를 뽑아서 올바른 순서대로 배치된 괄호 문자열을 알려주는 프로그램을 다음과 같이 개발하려고 합니다. 용어의 정의 '(' 와 ')' 로만 이루어진 문자열이 있을 경우, '(' 의 개수와 ')' 의 개수가 같다면 이를 균형잡힌 괄호 문자열이라고 부릅니다. 그리고 여기에 '('와 ')'의 ..
[Swift] 코딩테스트 연습! Lv3. 징검다리 건너기 /* 징검다리 건너기 - [본 문제는 정확성과 효율성 테스트 각각 점수가 있는 문제입니다.] 카카오 초등학교의 "니니즈 친구들"이 "라이언" 선생님과 함께 가을 소풍을 가는 중에 징검다리가 있는 개울을 만나서 건너편으로 건너려고 합니다. "라이언" 선생님은 "니니즈 친구들"이 무사히 징검다리를 건널 수 있도록 다음과 같이 규칙을 만들었습니다. 징검다리는 일렬로 놓여 있고 각 징검다리의 디딤돌에는 모두 숫자가 적혀 있으며 디딤돌의 숫자는 한 번 밟을 때마다 1씩 줄어듭니다. 디딤돌의 숫자가 0이 되면 더 이상 밟을 수 없으며 이때는 그 다음 디딤돌로 한번에 여러 칸을 건너 뛸 수 있습니다. 단, 다음으로 밟을 수 있는 디딤돌이 여러 개인 경우 무조건 가장 가까운 디딤돌로만 건너뛸 수 있습니다. "니니즈 친..