Swift랑 친해지기/programmers 풀기 174

[프로그래머스] 뒤에 있는 큰 수 찾기 (Swift)

https://school.programmers.co.kr/learn/courses/30/lessons/154539 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr - Stack 을 이용하여 현재 수보다 크지 못한 수들의 위치를 push해서 쌓아 올림 - 큰수가 생기면 result의 요소들을 다음으로 큰수로 변경 * 7, 20~23 번 런타임, 실행초과 에러 = For문 중복 + 마지막 요소가 큰 수 일 경우 비효율 적일 수 있음 import Foundation func solution(_ numbers:[Int]) -> [Int] { var result ..

[프로그래머스] 연속된 부분 수열의 합 (Swift)

https://school.programmers.co.kr/learn/courses/30/lessons/178870 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나만의 풀이 방법) - 왼쪽 인덱스 left 와 오른쪽 인덱스 right 지점을 정한다. - left부터 right 구간에 속한 값들을 모두 더한 것이 sum이다. - 만약 sum이 k보다 작다면 right 값을 1증가시키고 sequence[right] 를 sum에 더해준다. 이유: 구간의 합이 k보다 적기 때문에 다음 인덱스값을 더함 *이때 right값이 sequence배열의 갯수 보다 크면 ..

[프로그래머스] N개의 최소공배수 (Swift)

https://school.programmers.co.kr/learn/courses/30/lessons/12953 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이) 나눗셈을 이용하여 최소공배수를 구했다. 1을 제외한 수중에서 두가지 이상의 숫자가 나눠지면 계속 나누면 된다. 예제로 12,32,45,67,72 의 최소공배수를 구할때 다음과 같이 구할 수 있다. 2 | 12 32 45 67 72 3 | 6 16 45 67 36 2 | 2 16 15 67 12 3 | 1 8 15 67 6 2 | 1 8 5 67 2 ------------------ 1 4 ..

[프로그래머스] 최댓값과 최솟값 (Swift)

https://school.programmers.co.kr/learn/courses/30/lessons/12939 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr import Foundation func solution(_ s:String) -> String { let splitS = s.components(separatedBy: " ").map{Int($0)!} return "\(splitS.min()!) \(splitS.max()!)" }

[프로그래머스] 타겟넘버 (Swift) ※1,2번 실행초과

https://school.programmers.co.kr/learn/courses/30/lessons/43165 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr DFS 깊이 우선 탐색 알고리즘으로 푼 코드 - 탐색하려는 노드의 자식 노드부터 우선 탐색하는 방식 import Foundation func solution(_ numbers:[Int], _ target:Int) -> Int { var count = 0 func dfs(index: Int, sum: Int) { if index == numbers.count{ if sum == target { co..

[프로그래머스] 피로도 (Swift)

https://school.programmers.co.kr/learn/courses/30/lessons/87946 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr import Foundation func solution(_ k:Int, _ dungeons:[[Int]]) -> Int { var result = 0 //최대 던전수 //모든 경우의 수를 생각해봐야 하기 때문에 재귀 함수 사용 func visit(_ orders: [Int]){ //3. orders에 가야할 던전의 순서가 정해질 경우 if orders.count == dungeons.count{..

[프로그래머스] 2018 KAKAO BLIND RECRUITMENT[3차] 압축 (Swift)

https://school.programmers.co.kr/learn/courses/30/lessons/17684 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 1. Unicode와 딕셔너리를 이용해 key값을 A - Z (String)까지 value 값을1 -26 (Int)까지 알맞게 데이터 저장 2. 파라미터 msg의 인덱스를 이용하여 문자열을 잘랐음 3. 자른 문자열을 딕셔너리가 가지고 있지 않을때를 기준으로 dic에 데이터를 저장하도록 하였음 이때 두개 이상의 문자길이를 가지고 있을 경우 다음 입력의 순서를 건너 뛰어야 하므로 wcount를 ..

[프로그래머스] 2개 이하로 다른 비트 (Swift) -10,11 실행초과

https://school.programmers.co.kr/learn/courses/30/lessons/77885 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ※ numbers의 수들을 차례로 1씩 늘려서 비트를 비교하게 되면 10,11 실행초과 ※ - radix 메서드를 이용해 2진수로 변환 규칙을 찾아서 문제 해결 1. 마지막 자리비트가 0이면 1을 더함 - (10진수에 1을 더함) ex) 10진수 2 - 0010 -> +1 -> 0011(3) 2. 모든 비트가 1일 경우 비트 맨 앞자리에 1을 삽입하고 Index 1을 0으로 변환 ex) 10진수 ..

[프로그래머스] 덧칠하기 (Swift)

https://school.programmers.co.kr/learn/courses/30/lessons/161989 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이) 1.벽을 표현하는 array를 만들어 줬음(array를 0으로 n개 채움) 2. section의 위치를 파악해 벗겨진 위치에 1을 넣어주도록 함 - section의 위치는 1부터 새서 인덱스와 일치시키도록 -1을 해줌 3. 인덱스 0 (벽의 1번 )부터 벽의 길이-붓의길이-1까지를 차례로 탐색해 1이 있으면 벽에 덧칠해주었음 ex)붓의 길이(m)가 4라고 가정했을때 벽의 1(p)번부터 4..

[프로그래머스] 2021 Dev-Matching: 웹 백엔드 개발자(상반기)행렬 테두리 회전하기 (Swift)

https://school.programmers.co.kr/learn/courses/30/lessons/77485 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr import Foundation func solution(_ rows:Int, _ columns:Int, _ queries:[[Int]]) -> [Int] { if queries == [[1,1,rows,columns]]{ return [1] } // 가장 테두리 수만 회전할 경우 var board: [[Int]] = [[Int]]() //행렬 생성 let max = rows * columns /..