본문 바로가기

SWIFT64

[Swift] 매개변수 vs 전달인자 (feat. 아규먼트 레이블) 머리말 함수에서 사용되는 여러 용어 함수를 사용할 때면 매개변수, 전달인자, 인수, 아규먼트 레이블, 파라미터(패러미터), 아규먼트 등 여러 용어가 혼용하여 쓰인다. 특히나 Swift에서는 "아규먼트 레이블(argument label)"이라는 새로운 개념이 있어서 각 용어를 제대로 구분할 필요가 있다. 따라서 관련 용어를 확실하게 구분하기 위해 이번 포스팅을 하게 되었다 참고 자료 Functions | Documentation 함수 (Functions) - Swift 용어 정리 매개변수(parameter) 함수를 '정의'할 때 쓰이는 변수의 이름 그 자체 이름에 '변수'가 들어간 것을 알 수 있듯이 변수이다 하지만 엄밀히 말하면 Swift에서는 매개변수가 변수가 아니라 상수이다. Swift에서는 매개변수.. 2023. 7. 19.
[백준] (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.
[Swift] 집합(Set)의 메서드 머리말 공식 문서 링크 Sets - Collection Types 글을 쓰게 된 이유 1. 알고리즘 문제에서 사용하게 된 집합(Set)의 메서드 이번에 푼 알고리즘 문제에서 집합에 관련한 문제가 나왔는데, 컬렉션 타입 중에 집합은 거의 사용해 본 적이 없어서 이번에 정리를 하게 되었다. 2. 알고리즘 링크 코딩테스트 연습 - [1차] 뉴스 클러스터링 | 프로그래머스 스쿨 집합의 연산 동작 연산 동작의 특징은 아래와 같이 메서드와 파라미터를 이용해 구하며, 새로운 집합을 생성하는 것이다. 1. 교집합(Intersection) 두 집합의 공통된 값을 가지는 집합 2. 대칭차집합(Symmetric Difference) 두 집합을 더하되, 교집합을 제외한 집합 3. 합집합(Union) 두 집합의 모든 값을 더한.. 2023. 6. 14.
[프로그래머스] (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.
반응형