본문 바로가기

Swift5

[프로그래머스] (Swift) 위장 문제 보러 가기 문제 스파이들이 여러 종류의 옷들을 겹치지 않게 입으려고 한다. 각 종류당 하나의 옷을 입을 수 있고 입지 않는 종류가 있어도 괜찮다. 하지만 최소 한 개의 종류는 입어야 한다. 해결 Dictionary 만들기 의상 이름, 종류 순으로 String 배열이 들어오는데 총 조합의 개수만 알아내면 되므로 이름은 신경쓰지 않아도 된다. 같은 종류에 새로운 이름이 들어올 때마다 value를 +1 해준다. Dictionary에 종류를 key, 개수를 value로 저장해준다. 경우의 수 구하기 어떤 수의 약수의 개수는 소인수분해 후 각 밑의 지수 + 1끼리의 곱으로 구할 수 있다. 각 밑을 0번, 1번, 2번, … n번 사용해 수를 만들 수 있기 때문이다. 같은 원리를 사용한다. 한 종류 안에서 n개.. 2022. 10. 5.
[LeetCode] (Swift) 13. Roman to Integer 문제 보러 가기 문제 로마 숫자는 7가지 다른 문자로 표현된다: I, V, X, L, C, D, M 각 문자가 나타내는 숫자는 다음과 같다. 예를 들어, 2는 1 + 1 이므로 II 12는 10 + 2 이므로 XII 27은 20 + 5 + 2 이므로 XXVII. 로마 숫자는 주로 왼쪽부터 오른쪽으로, 큰 숫자에서 작은 숫자로 쓴다. 하지만 4는 IIII 로 쓰지 않고 1을 5 앞에 쓰고 5 - 1 을 해 IV 로 쓴다. 같은 원리로 9는 10 - 1 이므로 IX 로 쓴다. 빼기를 사용하는 여섯 가지 경우가 있다. V 와 X 앞에 I : 4, 9 L과 C 앞에 X: 40, 90 D와 M 앞에 C: 400, 900 → 로마 숫자가 주어지면 정수로 변환해라. 풀이 오른쪽으로 가면 숫자가 작아져야 하는데 여섯 .. 2022. 9. 14.
[백준] (Swift) 2675 문자열 반복 2675 문자열 반복 반복할 횟수와 반복할 문자열을 입력받아 문자열의 각 문자들을 입력받은 횟수만큼 출력한다. 한 줄에 횟수와 문자열이 같이 나오므로, String으로 받은 후 횟수만 Int로 형변환해 사용한다. 테스트 케이스를 여러 개 받는데 한 케이스에서는 개행이나 공백 없이 이어 쓰고, 각 케이스를 개행으로 구분해서 출력해준다. import Foundation for _ in 1...Int(readLine()!)! { let test = readLine()!.components(separatedBy: " ") for c in test[1] { for _ in 1...Int(test[0])! { print(c, terminator: "") } } print("") } 2022. 7. 11.
[백준](Swift) 1차원 배열 1차원 배열 단계를 해결해보자! 10818 최소, 최대 입력 받은 숫자들 중 최솟값, 최댓값을 찾는 문제다. 이 문제를 풀 때는 components를 사용하면 안 된다. 초반 포스팅에서 언급했듯이 입력을 공백 기준으로 자르는 방법으로 components, split 이 두 가지가 있는데 이 중 더 빠른 방법은 split이므로 이 문제는 split을 사용해야만 시간 초과가 나지 않는다. 잘 비교된 글이 있어서 링크를 첨부한다. Swift split VS components 처음에는 입력을 전부 받고 최솟값을 저장할 minn = 1000000, 최댓값을 저장할 maxn = -1000000을 만들고 입력받은 숫자들을 돌면서 값을 갱신해줬다. 답은 맞았다. 그런데 조금 더 찾아보니 배열에 min(), max().. 2022. 6. 4.