본문 바로가기

코딩 테스트/프로그래머스20

옹알이 (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) 공원 산책 머리말 문제 링크 코딩테스트 연습 - 공원 산책 | 프로그래머스 스쿨 이 문제를 선택한 이유 구현 문제 연습 풀이 풀이 순서 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.
[프로그래머스] (Swift) 크기가 작은 부분 문자열 - Lv.1 코딩테스트 연습 - 크기가 작은 부분 문자열 | 프로그래머스 스쿨 풀이 문자열을 배열로 분리 매개변수 t의 숫자를, 문자열 타입의 숫자로 하나로 분리한 배열로 변환한다 반복문에 필요한 범위와 부분문자열의 길이를 할당한다 부분문자열이 p보다 작거나 같으면 결괏값을 1 증가시킨다 코드 import Foundation func solution(_ t:String, _ p:String) -> Int { // solution("3141592", "271") // 매개변수 t의 숫자를, 문자열 타입의 숫자로 하나로 분리한 배열로 변환 let stringArray = Array(t).map { String($0) } // ["3", "1", "4", "1", "5", "9", "2"] // 결괏값을 0으로 초기화 v.. 2023. 5. 11.
[프로그래머스] (Swift) 카펫 - Lv.2 코딩테스트 연습 - 카펫 | 프로그래머스 스쿨 머리말 카테고리에 적혀 있는 풀이 힌트 원래 알고리즘을 풀 때 최대한 해당 문제의 주제를 알지 않으려고 한다. 이미 그 알고리즘 방식을 알고 풀면 실제 시험 상황처럼 당황하지 않기 때문이다. 하지만, 사이트에서 이미 완전 탐색임을 알려 주는 바람에 큰 힌트를 얻었다. 풀이 카펫의 면적은 갈색 격자의 수와 노란색 격자 수의 총합과 같다. 카펫의 상하좌우의 끝이 모두 한 줄이기 때문에 가로와 세로의 길이를 각각 2를 빼서 서로 곱하면 그것이 노란색 격자의 수와 같다. /* area = brown + yellow = row * col yellow = (row - 2) * (col - 2) OOOO OXXO OOOO OOO OXO OOO OOOOOOOO OXXXXX.. 2023. 5. 10.
[프로그래머스] (Swift) 비밀지도 (2018 카카오 1차) - Lv.1 머리말 문제 링크 이번 문제는 설명이 매우 길어서 한번에 캡처가 힘들어 링크만 첨부했다. 코딩테스트 연습 - [1차] 비밀지도 | 프로그래머스 스쿨 풀이 처음에는 Swift에서 제곱 메서드를 찾지 못해 직접 구현했다. 우선 정해진 길이의 이진법으로 변환하는 함수를 구현했다. 이진수의 길이와 정해진 길이를 고려해 "0"을 더할지 말지를 정했다. 이제는 매개변수로 주어진 배열을 1번의 함수를 이용해 이진수로 변환한다. 2번으로 구한 이진수로 서로 겹치는 과정이 필요하다. 이진수 문자열을 다시 쪼개어 각 자리를 더하여 크기에 따라 서로 다른 문자열로 변환하고 이를 연결하는 과정을 구현했다. 코드 func solution(_ n:Int, _ arr1:[Int], _ arr2:[Int]) -> [String] {.. 2023. 5. 9.
[프로그래머스] (Swift) 짝지어 제거하기 - Lv.2 문제 코딩테스트 연습 - 짝지어 제거하기 | 프로그래머스 스쿨 풀이 자료구조 스택(stack)의 개념 자료구조 스택을 이용하면 쉽게 풀 수 있다. 스택에 대해서는 아래 링크에 정리해 놨으니 확인해 보자. [자료구조] 스택(stack) in Python [자료구조] 스택(stack) in Python 선형 자료구조(linear data structure) 중에서 스택(stack)에 대해 알아 보자. 스택(stack)을 사전에서 찾아보면 무더기, 더미라는 뜻의 영단어이다. 아래의 돌탑이 대표적인 스택이다. 📌 정의 A stack is an andy-archive.tistory.com 스택의 삽입, 삭제 스택의 구현은 배열을 이용하여 메서드로 삽입(append), 삭제(removeLast)를 사용하면 된다. .. 2023. 5. 7.
반응형