본문 바로가기

코딩 테스트43

옹알이 (2) (in Swift) | 프로그래머스 코딩테스트 목차 머리말 익숙하지만 못 보던 옹알이 문제가 두 번째가 나왔다. 정답률도 생각보다 낮아서 의아했다. 링크 코딩 테스트 연습 - 옹알이 (2) 본문 풀이 아이디어 - 문제를 보고 스택을 활용하면 좋을 것 같다는 예상이 들었다. - 주어진 단어의 맨오른쪽부터 왼쪽으로 차례로 스택 (타입은 문자열) 으로 담아서 매번 해당 스택이 말할 수 있는 단어인지를 판단했다. (+) 자료구조 스택 스택(Stack)에 관한 블로그는 이곳에 있다. 궁금하다면 여기를 참고하자. 코드 import Foundation struct Nephew { let words = ["aya", "ye", "woo", "ma"] func isWordSpeakble(_ word: String) -> Int { var word = word.map.. 2024. 3. 13.
[백준] (Swift) 11653번: 소인수분해 머리말 문제 링크 11653번: 소인수분해 이 문제를 선택한 이유 Swift 문법 연습(guard, nil coalescing) 풀이 풀이 순서 입력 받은 문자열 값을 정수 num으로 변환 나누어야 할 소수를 2로 초기화 num이 해당 소수로 나누어진다면, num을 소수로 나눈 다음 해당 소수를 한번 출력 3번이 해당하지 않으면 prime을 1 증가 3~4번을 반복하는 while 문 작성 스위프트 코드 import Foundation var num = Int(readLine() ?? "") ?? 0 var prime = 2 while num > 1 { guard num 2023. 7. 12.
[백준] (Python) 12865번: 평범한 배낭 보호되어 있는 글 입니다. 2023. 7. 11.
[프로그래머스] (Swift) 공원 산책 머리말 문제 링크 코딩테스트 연습 - 공원 산책 | 프로그래머스 스쿨 이 문제를 선택한 이유 구현 문제 연습 풀이 풀이 순서 park에서 String으로 되어 있는 요소를 [String]으로 바꾸어 parkMap으로 새로 할당 현재 위치 location 초기화 "S"를 찾아 location에 할당 w, h를 할당 동서남북에 따라 해당 거리만큼 움직이는 move 함수를 정의 dx, dy로 나누어 각각 동서남북으로 구분 다만, 해당 거리만큼 움직였을 때 지도를 벗어나거나 "X"에 가로막혔을 때 원래의 위치를 반환 입력 값인 routes를 적절히 가공하여 move 함수에 대입하고 location의 요소를 반환 스위프트 코드 import Foundation func solution(_ park: [String].. 2023. 6. 12.
[프로그래머스] (2018 카카오) 프렌즈4블록 머리말 문제 링크 코딩테스트 연습 - [1차] 프렌즈4블록 | 프로그래머스 스쿨 이 문제를 선택한 이유 구현 문제 연습 풀이 개요 우선 2개의 배열을 새로 만들었다. 반복문에 필요한 보드 배열(board 배열의 각 요소를 한 단어씩 구분하여 새로 할당) - boardArr 각 보드의 블록이 2*2 블록인지의 여부를 판단하는 배열 - isSquare 풀이 순서 boardArr를 반복하면서 isSquare에 대한 참/거짓을 판별한다 isSquare 중에 true인 부분의 인덱스에 위치한 boardArr의 요소를 공백으로 바꾸고 지워진 블록을 카운트한다 == 블록이 지워진다 공백이 바꾼 자리를 재배열한다 == 블록이 떨어진다 이제 1~3번을 계속 반복하는데, 공백이 한번도 되지 않을 때 반복을 중단하고 카운트.. 2023. 6. 7.
[프로그래머스] (Swift) 정수를 나선형으로 배치하기 머리말 문제 링크 코딩테스트 연습 - 정수를 나선형으로 배치하기 | 프로그래머스 스쿨 이 문제를 선택한 이유 구현 문제 연습 풀이 한번 4부터 6까지 배열을 직접 만들어 보았다. /* [[1, 2, 3, 4], [12, 13, 14, 5], [11, 16, 15, 6], [10, 9, 8, 7]] [[1, 2, 3, 4, 5], [16, 17, 18, 19, 6], [15, 24, 25, 20, 7], [14, 23, 22, 21, 8], [13, 12, 11, 10, 9]] [[1, 2, 3, 4, 5, 6], [20, 21, 22, 23, 24, 7], [19, 32, 33, 34, 25, 8], [18, 31, 36, 35, 26, 9], [17, 30, 29, 28, 27, 10]] [16, 15.. 2023. 6. 5.
[프로그래머스] (Swift) [카카오 1차] 다트 게임 머리말 문제 링크 코딩테스트 연습 - [1차] 다트 게임 | 프로그래머스 스쿨 이 문제를 선택한 이유 구현 문제 연습 풀이 도저히 안 풀려서… 결국 구글링을 했다😭 참고 사이트 링크 [프로그래머스 lv1] [1차] 다트 게임 (파이썬) 풀이 핵심 → 스택 문제 풀이의 핵심은 "스택"을 구현하여, 주어진 배열의 요소를 하나하나 꺼내면서 이에 대한 조건문에 따라 스택에 삽입하거나 삭제하는 것이다. 풀이 순서 문자열의 문자 하나하나를 요소로 하는 배열을 만든다.(dartArr) 다만,숫자 10은 2글자이기에 1번에 앞서 10을 "a"로 변환한다. "S", "D", "T"를 각각 1, 2, 3에 해당하는 딕녀서리를 할당한다.(bonusDict) 빈 스택을 할당한다.(stack) 이제 1번의 배열의 요소를 반복하.. 2023. 6. 2.
[프로그래머스] 두 수의 합 머리말 문제 링크 코딩테스트 연습 - 두 수의 합 | 프로그래머스 스쿨 이 문제를 선택한 이유 구현 문제 연습 문자열 풀이 주의점 문제의 조건에서 a와 b의 길이가 최대 100,000인 점을 주의해야 한다. 단순히 문자열을 정수로 변환하여 더하면, 오버플로우에 의해 오류가 난다. 따라서 사람이 직접 계산하는 방식(혹은 논리회로에서 전가산기의 방식)으로 접근해야 한다. 숫자를 맨끝에서 더하면서 자리올림과 나머지를 나누어, 새로운 배열에 추가할 것이다. 풀이 순서 우선 파라미터의 값 중에 큰 수와 작은 수를 구분하여 각각 할당한다. (bigNumber, smallNumber) 문자열을 정수를 요소로 갖는 배열로 새로 할당한다(bigNumberArr, smallNumberArr) 각 자리를 더한 값의 배열(s.. 2023. 5. 30.
백준) 1141번: 접두사 (Swift) 목차 머리말 문제 링크 1141번: 접두사 이 문제를 선택한 이유 구현 문제 연습 Swift 문자열 인덱스 접근 연습 풀이 n과 단어를 배열에 할당 첫 줄의 숫자를 정수로 변환하여 n으로 할당한다. 다음 줄부터는 n에 대한 반복문을 돌며 빈 배열에 하나하나씩 문자열을 추가한다. isPrefix 함수 우선 맨 아래 두 단어를 비교하여 한 단어가 다른 단어의 접두사인지를 판별하는 함수(isPrefix)를 만들었다. 두 단어 중 작은 값을 범위로 하여 문자열 인덱스를 접근하는데, 같은 값이면 카운트를 한다 카운트가 범위와 값이 같으면 접두사가 충족하기에 true를, 그렇지 않으면 기본값인 false를 리턴한다. 이중 반복문을 통한 인덱스 접근 두 단어를 조합하기 위해 이중 반복문으로 인덱스를 접근한다. isP.. 2023. 5. 29.
[백준] (Swift) 11866번: 요세푸스 문제 0 머리말 문제 링크 11866번: 요세푸스 문제 0 이 문제를 선택한 이유 낯선 문제를 접했을 떄 적절한 반복문과 조건문을 사용하기 위함 구현 문제 연습 풀이 이 문제의 핵심은 배열의 인덱스가 초과할 때, 얼마만큼 처음의 인덱스로 돌아가서 인덱스를 구하는지이다. 나머지 연산자를 활용하여 배열의 길이만큼을 나눈 나머지를 구해 인덱스 초과를 방지한다 // 입력 var input = readLine()!.split(separator: " ").map { Int($0)! } // n, k 할당 let n = input[0] // 7 let k = input[1] // 3 // 배열 할당 var circle = Array(1...n) // 인덱스 초기화 var order = [Int]() var index = 0 .. 2023. 5. 26.
반응형