본문 바로가기

SWIFT64

[Swift] enumerated()로 인덱스와 요소를 모두 반환하기 Swift의 문자열이나 배열에서 어떻게 하면 인덱스와 요소를 하나로 묶은 채 모두 출력할 수 있을까? 바로 enumerated() 메서드를 이용하면 된다. enumerate는 '열거하다'라는 뜻의 영단어이다. 📌 공식 문서 링크 enumerated() | Apple Developer Documentation Collection Types | Documentation 콜렉션 타입(Collection Types) | Swift 📌 요약 Returns a sequence of pairs (n, x), where n represents a consecutive integer starting at zero and x represents an element of the sequence. 쌍으로 묶은 (n, x) 과.. 2023. 3. 28.
프로그래머스) 분수의 덧셈 (Swift) 📌 문제 코딩테스트 연습 - 분수의 덧셈 | 프로그래머스 📌 접근 방식 두 분수를 더하여 기약분수로 만드는 알고리즘은 크게 세 단계로 나누어진다. 통분: 서로 다른 분모를 같게 만든다. 덧셈: 분모를 같게 하기 위하여 곱해진 분자를 서로 더한다. 약분: 분모, 분자를 더 이상 나눌 수 없을 때까지 나눈다. → 최대공약수 이용 여기서 통분과 덧셈은 단순한 사칙연산으로 해결이 가능하지만, 약분에서는 최대공약수를 구하여 한번에 나누는 게 핵심이다. 최대공약수을 구하는 방법은 유클리드 호제법을 이용했는데, 이에 대한 설명은 아래에 자세히 다루었으니 참고 하자. [재귀] 유클리드 호제법과 최대공약수, 최소공배수 유클리드 호제법을 배워 보고 재귀적으로(recursively) 구현한 것과 반복적으로(iterative.. 2023. 3. 27.
[Swift] OT - 독학 사이트와 강의 모음 Swift를 이것저것으로 공부를 하는데 너무 난잡한 것 같아 정리의 필요성을 느껴 블로그로 작성하게 되었다. 공부하는데 좋은 자료들을 발견하면 계속 업데이트 할 예정이다. 📌 공식 문서 공식 문서만큼 확실하고 정확한 소스는 없을 것이다. 하지만 완전 초급자라면 이해해야 할 개념이 너무 많아서 오히려 많이 힘들 수 있다. 더군다나 평소에 긴 글을 읽고 해석하는 것에 약하면 더 그렇다. 공식 문서는 프로그래밍 언어에 어느 정도 틀이 잡힌 상태에서 보는 게 좋다. 공식 문서 사이트는 아래의 2가지가 있다. Swift 공식 문서 애플 개발자 공식 문서 1번은 글로 길게 풀어 쓴 설명과 예제 코드로 설명 되어 있다면, 2번은 주로 사전처럼 단어나 문법, 용어과 짧은 설명으로 되어 있다. 또한 1번은 한글 번역본이.. 2023. 3. 27.
[백준] (Python/Swift) 3040번: 백설 공주와 일곱 난쟁이 📌 문제 3040번: 백설 공주와 일곱 난쟁이 📌 올바른 풀이 7개의 옳은 데이터를 찾는 게 아닌 그것의 여집합인 2개의 틀린 데이터를 찾는 것이 핵심이다. 그 2개의 데이터를 어떻게 다루냐에 따라 여러 방식이 있을 것이다. 압도적으로 크거나 압도적으로 작은 수로 재할당 하거나 처음 발견한 두 깂을 저장하여 배열에서 삭제하거나 적당한 수(0이나 -1)로 재할당 하되, 이중 for 문을 한번에 break 하여 빠져 나오는 것이다. 아래의 내용은 초반에 잘못된 방식으로 접근하여 작성한 풀이와 코드이다. 📌 잘못된 풀이 7개의 옳은 데이터를 찾는 게 아닌 그것의 여집합인 2개의 틀린 데이터를 찾는 것이 핵심이다. 이중 반복문을 돌 때, Python의 range() 함수와는 다르게 이중 for 문에서 바깥쪽 f.. 2023. 3. 25.
Swift 자료형(Data Types) 목차 머리말 들어가기 전에 이전 포스팅 - 상수와 변수(Constants and Variables) 저번 포스팅에서는 Swift의 상수와 변수에 대해 알아 보았다. 이번 포스팅 이번에는 Swift의 다양한 자료형에 대해 알아 보자. 각 자료형의 특징을 살펴 보고 어떠한 문법으로 작성해야 하는지 알아 보자. 자료형(Data types) 자료형은 변수(혹은 상수)를 담는 '그릇'이라 할 수 있다. 같은 음식이라도 어떤 그릇에 담냐에 따라 그 형태가 달라지듯이, 같은 데이터라도 어떠한 자료형에 담냐에 따라 그 값이 달라진다. 자료형의 종류 1. 정수(Integers) 1-1. Int - 64비트 정수 var MtHallaSeaLevel: Int = 1950 print("MtHallaSeaLevel: \(MtH.. 2023. 3. 24.
[백준] (Swift) 1157번: 단어 공부 📌 문제 1157번: 단어 공부 📌 풀이 1: [Character: Int] 형태의 딕셔너리 딕셔너리를 이용해 주어진 문자열의 인덱스를 지날 때마다, 해당 값의 알파벳을 딕셔너리의 값에서 1을 더하는 식으로 문제를 풀었다. 📌 코드 // 입력 받은 문자열을 input에 할당 let input = readLine()! // 함수에 input을 대입하여 출력 print(findWordOfMaxFrequency(input)) // 주어진 단어에서 가장 많이 사용된 알파벳을 대문자로 출력하는 함수 정의 func findWordOfMaxFrequency(_ word: String) -> Character { var charFrequency: [Character: Int] = [:] var maxCharFreque.. 2023. 3. 22.
[백준] (Swift) 3613번: Java vs C++ 📌 문제 3613번: Java vs C++ 📌 풀이 개요 이 문제의 핵심은 Java 형식(Camel case)과 Cpp 형식(Snake case)의 특징을 확인하여 이를 서로 변환하는 것이다. 각 형식의 예외 조건을 찾아 해당 형식에 부합한지를 판별해야 한다. 변수명의 이름이 바뀔 때마다 Java 형식은 대문자가 되고, Cpp 형식은 밑줄('_')이 따라 붙는다. 여기에 맞지 않는 것은 예외 처리로 판별한다. 📌 풀이 1. Java 형식이 아닐 때 첫글자가 대문자일 경우 밑줄이 하나라도 있을 경우 2. Cpp 형식이 아닐 때 양끝에 밑줄이 있을 경우 밑줄이 2개 이상 붙어 있을 경우 대문자가 하나라도 있을 경우 이제 위의 형식을 판별했다면 서로 다른 형식으로 변환하면 된다. 3. Cpp에서 Java로 변.. 2023. 3. 21.
[Swift] stride()로 숫자를 단계적으로 다루기 Swift로 팩토리얼 문제를 반복적으로(iteratively) 풀어 보면서 stride() 메서드를 알게 되었다. 이를 보다 더 자세히 알고 싶어서 포스팅을 했다. [백준] (Swift) 10872번: 팩토리얼 (재귀 vs 반복) 📌 문제 10872번: 팩토리얼 📌 풀이 개요 N에서 1까지 차례로 곱하는 팩토리얼은 크게 2가지 경우로 풀어 볼 수 있다. 재귀적으로(recursively) 푸는 방식이거나, 반복적으로(iteratively) 푸는 방식이다. andy-archive.tistory.com 📌 공식 문서 링크 stride(from:to:by:) | Apple Developer Documentation stride(from:to:through:) | Apple Developer Documentati.. 2023. 3. 18.
[백준] (Swift) 10872번: 팩토리얼 (재귀 vs 반복) 📌 문제 10872번: 팩토리얼 📌 풀이 개요 N에서 1까지 차례로 곱하는 팩토리얼은 크게 2가지 경우로 풀어 볼 수 있다. 재귀적으로(recursively) 푸는 방식이거나, 반복적으로(iteratively) 푸는 방식이다. 📌 풀이 1: 재귀함수 재귀에 대한 개념은 아래의 링크 페이지에 정리해 두었다. [알고리즘] 재귀(Recursion)와 콜 스택(Call Stack) 알고리즘 이론에서 기본이며, 분할 정복이나 백트래킹 같은 여러 알고리즘의 기반을 맡고 있는 재귀(recursion)는 무엇일까? 이에 대해 자세히 알아 보자. 인형 안에, 조금 더 작지만 모양이 같은 andy-archive.tistory.com 재귀함수로 푸는 방식은 아래와 같다. 팩토리얼에 대한 함수를 정의해야 한다. → $\mat.. 2023. 3. 18.
[백준] (Swift) 10769번: 행복한지 슬픈지 📌 문제 10769번: 행복한지 슬픈지 📌 풀이 주어진 입력을 배열로 변환한다. 배열에서 단어를 검사할 때 인덱스의 범위를 초과하면 안되므로, 1번 이전에 문자열에서 임의의 문자 2개를 추가한다. 배열의 인덱스를 접근하면서 행복한 이모티콘과 슬픈 이모티콘의 개수를 계산한다. 행복한 이모티콘과 슬픈 이모티콘의 개수를 비교하여 출력의 조건문에 따라 화면 출력한다. 📌 코드 // 행복한 얼굴과 슬픈 얼굴에 대한 개수를 변수로 할당 var happyStringCount = 0 var sadStringCount = 0 // 주어진 입력을 input에 문자열로 할당 var input = readLine()! // 인덱스 초과를 막기 위해 임의의 두 문자를 맨뒤에 추가 input += ".." // 문자열을 배열로 .. 2023. 3. 18.
반응형