본문 바로가기

분류 전체보기151

[프로그래머스] (Swift) 비밀지도 (2018 카카오 1차) - Lv.1 머리말 문제 링크 이번 문제는 설명이 매우 길어서 한번에 캡처가 힘들어 링크만 첨부했다. 코딩테스트 연습 - [1차] 비밀지도 | 프로그래머스 스쿨 풀이 처음에는 Swift에서 제곱 메서드를 찾지 못해 직접 구현했다. 우선 정해진 길이의 이진법으로 변환하는 함수를 구현했다. 이진수의 길이와 정해진 길이를 고려해 "0"을 더할지 말지를 정했다. 이제는 매개변수로 주어진 배열을 1번의 함수를 이용해 이진수로 변환한다. 2번으로 구한 이진수로 서로 겹치는 과정이 필요하다. 이진수 문자열을 다시 쪼개어 각 자리를 더하여 크기에 따라 서로 다른 문자열로 변환하고 이를 연결하는 과정을 구현했다. 코드 func solution(_ n:Int, _ arr1:[Int], _ arr2:[Int]) -> [String] {.. 2023. 5. 9.
[Swift] 옵셔널과 언래핑(Optionals and Unwrapping) 머리말 Swift 언어만의 특이한 자료형, 옵셔널(Optional) Swift 언어를 계속 접하다 보면 다른 언어와는 다르게 물음표 기호(?)와 느낌표 기호(!)가 많은 것을 알 수 있다. 처음에는 생소한 개념이고 왜 이런 걸 쓰는지에 대한 의문이 남지만, 쓰면 쓸수록 유용하다는 옵셔널(Optional)에 대해 자세히 알아 보자. 참고 자료 옵셔널(Optionals) - 기본 (The Basics) - Swift 옵셔널 - 앨런 Swift문법 마스터 스쿨 옵셔널 타입(Optional Type) 정의 변수의 값이 없는 경우를 포함하는 임시적인 타입 '선택적인'이라는 뜻의 영단어 optional에서도 알 수 있듯이, 실제로 값이 있을지 없을지를 나타내는 임시적인 타입이다. 'optional'의 검색결과 : .. 2023. 5. 8.
[프로그래머스] (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.
[Swift] 두 요소의 위치를 바꾸는 방법 (swap 함수 구현과 swapAt 인스턴스 메서드) 들어가기 전에 글을 쓰게 된 이유 코딩테스트를 문제 하나를 풀고 있던 중, Swift 언어로 간단하게 배열의 두 요소를 바꾸고 싶은데 마음대로 되지 않았다. 내가 알던 swap의 알고리즘을 Swift에 적용해 보기도 했고, swapAt이라는 자체 인스턴스 메서드를 활용하여 요소를 바꿀 수 있는 걸 우여곡절 알게 되어서 이를 정리하기 위해 글을 쓰게 되었다. C의 swap 구현 C 언어의 swap 구현 내가 C언어에서 알고 있는 방식의 swap 알고리즘이다. 이를 Swift에 적용해 보고 싶었다. 참고로 코드블럭 언어가 cpp로 적혀 있는 건 티스토리의 코드블럭에서 C가 없어서 그렇다. #include void swap(int* a, int* b); int main(void) { int a = 1; int.. 2023. 5. 4.
[회고록] 메타코드M 코딩테스트 챌린지 2기 후기 들어가기 전에 해당 내용은 2주 간의 메타코드M 코딩테스트 챌린지 2기를 수료하고 개인적으로 작성한 회고록입니다. 혹시 문제가 되는 내용이 있다면 알려주시길 바랍니다. 참가 이유 1. 소속감과 동기 부여 프로그래머스에서 계속 문제를 풀고 있긴 한데, 매번 혼자 하니 내가 이것을 꾸준히 할 수 있을지에 대한 고민이 들었다. 다른 사람들과 같이 하면서 느낄 수 있는 소속감이나 동기 부여가 필요했다. 이런 고민 중에 마침 구독 중인 YouTube 채널인 메타코드M에서 코딩테스트 챌린지 멤버를 모집하고 있었고 지원해서 참가하게 되었다. 2. 참가 비용이 존재하되, 100% 수료 시 계속 할 수 있는 점 온라인으로 참가하는데 굳이 개인 비용을 들여가며 참가해야 하는지 처음에 의문이 들긴 했지만, 경제적 비용이 드.. 2023. 5. 4.
[Swift] print 함수로 주어진 여러 아이템을 String 타입으로 표준 출력하기 들어가기 전에 포스팅 이유와 느낀 점 Slack에서 print 함수와 보간법(interpolation)에 대한 차이점의 질문이 올라 와서 나도 궁금해서 공식 문서를 찾아 보며 정리하게 되었다. 당연하게 쓰고 있는 print 함수이지만, 정작 어떻게 제대로 쓰는 줄 몰랐는데 이를 정리하면서 좀 더 깊게 알게 되었다 :) 참고 자료 print에 대한 애플 개발자 공식 문서를 참고했다. 아래에 한글로 적힌 내용은 공식 문서를 최대한 한글의 문맥에 가깝게 번역했다. print(_:separator:terminator:) | Apple Developer Documentation print 함수 정의 공식 문서 정의 Writes the textual representations of the given items i.. 2023. 5. 3.
[프로그래머스] (Swift) 시저 암호 - Lv.1 코딩테스트 연습 - 시저 암호 | 프로그래머스 스쿨 풀이 유니코드 스칼라 값과 정수 값을 오가는 것에 애를 많이 먹었다. 공식 문서를 찾아 보려 해도 키워드로 UnicodeScalar, unicodeScalar를 찾으면 문서가 너무 많이 나오고 설명이나 예시 코드가 많지 않아서 애를 많이 먹었다.🥲 결괏값을 빈 문자열로 초기화 공백인 경우 공백을 결괏값에 더하고 continue한다. 다음에는 간격을 더한 알파벳 값이 끝 값(z, Z)을 넘어 초과할 경우 이를 바꿔줘야 하는데, 이게 좀 까다롭다. 초과하지 않는 경우에는 단순히 간격을 더한 값을 결괏값에 더한다. 코드 func solution(_ s:String, _ n:Int) -> String { var result = "" // 문자열의 유니코드 스칼.. 2023. 5. 2.
[프로그래머스] (Swift) 다음 큰 숫자 - Lv.2 코딩테스트 연습 - 다음 큰 숫자 | 프로그래머스 스쿨 📌 풀이 풀이 순서 우선 주어진 매개변수를 이진수의 문자열로 변환한다. 결괏값을 n으로 초기화한다. 십진수를 이진수로 변환하여 1의 개수를 세는 함수를 만든다 먼저 결괏값을 1 증가시켜 다음 수로 만든다. 기존의 n 값과 4번의 결괏값으로 3번의 함수를 써서 개수가 같을 때까지 무한 루프를 반복한다. 5번에서 탈출한 결괏값을 출력한다. 예외 조건 위의 풀이 순서로 하니 테스트 케이스 딱 하나가 시간 초과가 떴다. 아니 무슨... 왜... 혹시나 예제의 데이터처럼 이진수의 숫자가 모두 1인 수는 다음 숫자로 변환하는데 시간이 많이 걸릴까하는 생각이 들었다. 이진수로 변환했을 때 숫자가 모두 1인 예외 조건 맨 왼쪽의 1을 기준으로 바로 오른쪽에 0을 .. 2023. 5. 1.
[백준] (Swift) N과 M (2) 15650번: N과 M (2) 📌 풀이 중복되지 않아야 하는 수열이므로 조합을 구현하는 문제이다. 그렇다면 조합을 어떻게 구현할까? 바로 백트래킹 알고리즘으로 구현하면 된다. 백트래킹(Backtracking) - DFS로 구현 1. 배열 2개를 만든다. 백트래킹의 진행 과정에 대한 배열 `sequence` 노드의 방문 여부에 대한 배열 `visited` 2. DFS 함수를 정의하여, Base Case와 Recursive Steps에 대한 알고리즘을 세운다. Base Case: 깊이의 끝에 도달했을 때 여태 쌓인 진행 과정을 원하는 형식으로 변환하여 출력 Recursive Steps: `N`만큼 반복하되, 방문하지 않은 노드이면 방문 처리를 하고 다음 노드에 대한 재귀함수를 호출한다. (조건문에 도달하지 .. 2023. 4. 30.
[회고록] (프로그래머스) 2023 Summer Coding - 스타트업 인턴 프로그램 코딩테스트 해당 블로그는 프로그래머스에서 2023-04-29에 있었던 2023 Summer Coding - 스타트업 인턴 프로그램의 코딩테스트를 보고 작성한 후기입니다. 혹여나 문제가 되는 내용이 있다면 알려주시기 바랍니다. 📌 인턴 프로그램에 지원한 이유 사실 프로그램의 합격 여부보다는 실제 코딩테스트의 난이도, 환경이나 분위기 등을 경험하고 싶어서 이번 프로그램을 지원하게 되었다. 프로그램 합격을 위해 준비하는 것은 아니었지만 최대한 긴장감 있게 코팅 테스트를 임하려고 했다. 📌 기존에 풀어 왔던 알고리즘 문제들 내가 여태 풀었던 알고리즘 문제는 문자열/배열의 변형이나 조건문, 반복문 등을 이용한 문제가 대부분이었다. 아직은 Swift 문법에 적응하기 위해 메서드나 클로저 정도까지 연습하는 차원이었기에 난이도를.. 2023. 4. 29.
반응형