본문 바로가기

반응형

Swift

(359)
[BOJ] 백준 15829 Hashing (Swift) 문제 https://www.acmicpc.net/problem/15829 15829번: Hashing APC에 온 것을 환영한다. 만약 여러분이 학교에서 자료구조를 수강했다면 해시 함수에 대해 배웠을 것이다. 해시 함수란 임의의 길이의 입력을 받아서 고정된 길이의 출력을 내보내는 함수로 정 www.acmicpc.net 풀이 문제와 힌트를 보면 쉽게 풀 수 있는 문제라고 생각할 수 있다. 하지만 문자열의 길이가 최대 50이다. 이는 $31^49$를 구해주어야 한다. Swift에서는 Big Integer를 지원하지 않는데 어떻게 풀이할 수 있을까? 먼저 모듈러 연산에 대해 이해하고 있어야 한다. $(a + b) \mod M = ((a \mod M) + (b \mod M)) \mod M$ $(a - b) \m..
[BOJ] 백준 2751 수 정렬하기 2 (Swift) 문제 https://www.acmicpc.net/problem/2751 2751번: 수 정렬하기 2 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 풀이 Swift 내장함수인 sorted, sort 메서드를 통해 풀 수 있는 문제 Swift에서 출력 함수인 print가 String의 + 연산 보다 느리기 때문에 print 함수를 한 번만 사용하면 속도를 개선할 수 있음 소스코드 후기 아주 간단한 정렬 알고리즘
[BOJ] 백준 4153 직각삼각형 (Swift) 문제 https://www.acmicpc.net/problem/4153 4153번: 직각삼각형 입력은 여러개의 테스트케이스로 주어지며 마지막줄에는 0 0 0이 입력된다. 각 테스트케이스는 모두 30,000보다 작은 양의 정수로 주어지며, 각 입력은 변의 길이를 의미한다. www.acmicpc.net 풀이 직각삼각형의 공식은 $a^2 = b^2 + c^2$ 이다. a는 가장 큰 변의 길이를 의미함 먼저 입력으로 [0, 0, 0] 이 들어올 때 까지 받기 위해 while-let 문법을 사용하였음 sorted 메서드를 사용해 가장 큰 변의 길이를 구하고 공식과 맞는지 확인하는 방법으로 풀 수 있다. 소스코드 후기 직각삼각형 공식을 안다면 쉽게 풀 수 있는 문제
[BOJ] 백준 1259 팰린드롬수 (Swift) 문제 https://www.acmicpc.net/problem/1259 1259번: 팰린드롬수 입력은 여러 개의 테스트 케이스로 이루어져 있으며, 각 줄마다 1 이상 99999 이하의 정수가 주어진다. 입력의 마지막 줄에는 0이 주어지며, 이 줄은 문제에 포함되지 않는다. www.acmicpc.net 풀이 팰린드롬은 앞/뒤 로 읽어도 똑같은 단어를 의미한다. ex) 기러기, 토마토, 스위스, 역삼역, ... reversed() 메서드를 사용해서 동일하다면 팰린드롬 일 것이다. 또한, 0일 때까지 입력을 받으므로, while let 구문을 통해 입력을 받아주었다. 소스코드 후기 reversed() 메서드를 사용해서 쉽게 풀 수 있는 문제
[BOJ] 백준 2635 수 이어가기 (Swift) 문제 https://www.acmicpc.net/problem/2635 2635번: 수 이어가기 첫 번째 수가 주어진다. 이 수는 30,000 보다 같거나 작은 양의 정수이다. www.acmicpc.net 풀이 문제에 제시된 규칙대로 구현하면 되는 문제 첫 번째 수로 양의 정수가 주어진다. -> 이는 입력으로 주어지므로 입력을 받으면 됨 두 번째 수는 양의 정수 중에서 하나를 선택한다. -> 1번에서 받은 수 보다는 작거나 같아야함 (이유는 4번을 보면 알 수 있음) 세 번째부터 이후에 나오는 모든 수는 앞의 앞의 수에서 앞의 수를 빼서 만든다. 예를 들어, 세 번째 수는 첫 번째 수에서 두 번째 수를 뺀 것이고, 네 번째 수는 두 번째 수에서 세 번째 수를 뺀 것이다. -> 아하 음의 정수가 만들어지면..
[BOJ] 백준 27866 문자와 문자열 (Swift) 문제 https://www.acmicpc.net/problem/27866 27866번: 문자와 문자열 첫째 줄에 영어 소문자와 대문자로만 이루어진 단어 $S$가 주어진다. 단어의 길이는 최대 $1\,000$이다. 둘째 줄에 정수 $i$가 주어진다. ($1 \le i \le \left|S\right|$) www.acmicpc.net 풀이 입력받은 문자열의 i번째 글자를 출력하면 되는 문제 Swift에서는 index로 문자열에 접근할 수 없기 때문에, 문자열을 배열형태로 만들거나, String의 index 메서드를 활용하여 풀 수 있음 index는 1이 아닌 0부터 시작하므로 입력받은 i에서 1을 빼주어서 구해주어야 함 소스코드 후기 Swift에서 index로 문자열에 접근할 수 없어서 당황할 수 있지만, ..
[BOJ] 백준 2920 음계 (Swift) 문제 https://www.acmicpc.net/problem/2920 2920번: 음계 다장조는 c d e f g a b C, 총 8개 음으로 이루어져있다. 이 문제에서 8개 음은 다음과 같이 숫자로 바꾸어 표현한다. c는 1로, d는 2로, ..., C를 8로 바꾼다. 1부터 8까지 차례대로 연주한다면 ascending, 8 www.acmicpc.net 풀이 이 문제는 입력받은 배열이 1, 2, 3, 4, 5, 6, 7, 8 과 같이 1부터 8까지 오름차순으로 되어있으면 ascending 8, 7, 6, 5, 4, 3, 2, 1 과 같이 8부터 1까지 내림차순으로 되어있으면 descending 그 외 mixed 를 출력하면 되는 문제 소스코드 후기 sorted 메서드로 쉽게 풀 수 있는 문제 굳이 s..
[BOJ] 백준 2741 N 찍기 (Swift) 문제 https://www.acmicpc.net/problem/2741 2741번: N 찍기 자연수 N이 주어졌을 때, 1부터 N까지 한 줄에 하나씩 출력하는 프로그램을 작성하시오. www.acmicpc.net 풀이 반복문에 대해 알고있다면 쉽게 풀 수 있는 문제이다. for, forEach, while문 등 다양한 방법으로 풀 수 있지만, (1...n)의 range와 forEach를 사용하여 풀이했다. 소스코드 후기 문법을 배운지 얼마 안됐거나, 온라인저지에 익숙하지 않을 때 연습겸 풀어볼 수 있는 문제라고 생각함

반응형