반응형
1. 편지
머쓱이는 할머니께 생신 축하 편지를 쓰려고 합니다. 할머니가 보시기 편하도록 글자 한 자 한 자를 가로 2cm 크기로 적으려고 하며, 편지를 가로로만 적을 때, 축하 문구 message를 적기 위해 필요한 편지지의 최소 가로길이를 return 하도록 solution 함수를 완성해주세요.
제한사항
- 공백도 하나의 문자로 취급합니다.
- 1 ≤ message의 길이 ≤ 50
- 편지지의 여백은 생각하지 않습니다.
- message는 영문 알파벳 대소문자, ‘!’, ‘~’ 또는 공백으로만 이루어져 있습니다.
입출력 예
message | result |
"happy birthday!" | 30 |
"I love you~" | 22 |
입출력 예 설명
입출력 예 #1
- message의 글자 수가 15개로 최소 가로 30cm의 편지지가 필요합니다.
입출력 예 #2
- message의 글자 수가 11개로 최소 가로 22cm의 편지지가 필요합니다.
제출 답안
import Foundation
func solution(_ message:String) -> Int {
// 전체 문자 개수에 2를 곱하여 반환
return (message.count ) * 2
}
2. 가장 큰 수 찾기
정수 배열 array가 매개변수로 주어질 때, 가장 큰 수와 그 수의 인덱스를 담은 배열을 return 하도록 solution 함수를 완성해보세요.
제한사항
- 1 ≤ array의 길이 ≤ 100
- 0 ≤ array 원소 ≤ 1,000
- array에 중복된 숫자는 없습니다.
입출력 예
array | result |
[1, 8, 3] | [8, 1] |
[9, 10, 11, 8] | [11, 2] |
입출력 예 설명
입출력 예 #1
- 1, 8, 3 중 가장 큰 수는 8이고 인덱스 1에 있습니다.
입출력 예 #2
- 9, 10, 11, 8 중 가장 큰 수는 11이고 인덱스 2에 있습니다.
제출 답안
import Foundation
func solution(_ array: [Int]) -> [Int] {
let s1 = array.max() ?? 0 // 배열에서 가장 큰 값 찾기
let s2 = array.firstIndex(of: s1) ?? 0 // 가장 큰 값의 첫 번째 인덱스 찾기
return [s1, s2] // 최대값과 해당 인덱스를 배열로 반환
}
3. 문자열 계산하기
my_string은 "3 + 5"처럼 문자열로 된 수식입니다. 문자열 my_string이 매개변수로 주어질 때, 수식을 계산한 값을 return 하는 solution 함수를 완성해주세요.
제한사항
- 연산자는 +, -만 존재합니다.
- 문자열의 시작과 끝에는 공백이 없습니다.
- 0으로 시작하는 숫자는 주어지지 않습니다.
- 잘못된 수식은 주어지지 않습니다.
- 5 ≤ my_string의 길이 ≤ 100
- my_string을 계산한 결과값은 1 이상 100,000 이하입니다.
- my_string의 중간 계산 값은 -100,000 이상 100,000 이하입니다.
- 계산에 사용하는 숫자는 1 이상 20,000 이하인 자연수입니다.
- my_string에는 연산자가 적어도 하나 포함되어 있습니다.
- return type 은 정수형입니다.
- my_string의 숫자와 연산자는 공백 하나로 구분되어 있습니다.
입출력 예
my_string | result |
"3 + 4" | 7 |
입출력 예 설명
입출력 예 #1
- 3 + 4 = 7을 return 합니다.
import Foundation
func solution(_ my_string: String) -> Int {
// 문자열을 공백(" ") 기준으로 나누어 토큰화
let tokens = my_string.split(separator: " ").map { String($0) }
// 첫 번째 숫자를 초기값으로 설정
var result = Int(tokens[0]) ?? 0
var index = 1
while index < tokens.count {
let op = tokens[index] // 연산자 ("+" 또는 "-")
let num = Int(tokens[index + 1]) ?? 0 // 연산할 숫자
// 연산자에 따라 계산 수행
if op == "+" {
result += num
} else if op == "-" {
result -= num
}
index += 2 // 연산자와 숫자를 처리했으므로, 다음 연산을 위해 2 증가
}
return result // 최종 계산 결과 반환
}
Feat. chatGPT
4. 배열의 유사도
두 배열이 얼마나 유사한지 확인해보려고 합니다. 문자열 배열 s1과 s2가 주어질 때 같은 원소의 개수를 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ s1, s2의 길이 ≤ 100
- 1 ≤ s1, s2의 원소의 길이 ≤ 10
- s1과 s2의 원소는 알파벳 소문자로만 이루어져 있습니다
- s1과 s2는 각각 중복된 원소를 갖지 않습니다.
입출력 예
s1 | s2 | result |
["a", "b", "c"] | ["com", "b", "d", "p", "c"] | 2 |
["n", "omg"] | ["m", "dot"] | 0 |
입출력 예 설명
입출력 예 #1
- "b"와 "c"가 같으므로 2를 return합니다.
입출력 예 #2
- 같은 원소가 없으므로 0을 return합니다.
제출 답안
import Foundation
func solution(_ s1: [String], _ s2: [String]) -> Int {
// s1과 s2를 Set(집합)으로 변환하여 중복 제거
// intersection(_: )을 사용하여 두 집합의 공통 요소를 찾음
// 공통 요소의 개수를 반환
return Set(s1).intersection(Set(s2)).count
}
https://developer.apple.com/documentation/swift/set/intersection(_:)-1zh8f
반응형
'프로그래머스 입문문제' 카테고리의 다른 글
[프로그래머스 입문문제] Day 18 문자열, 수학, 조건문, 정렬 (0) | 2025.02.08 |
---|---|
[프로그래머스 입문문제] Day 17 문자열, 수학, 조건문, 배열, 사칙연산 (0) | 2025.02.06 |
[프로그래머스 입문문제] Day 15 문자열, 해시, 배열, 수학 (0) | 2025.02.04 |
[프로그래머스 입문문제] Day 14 조건문, 반복문, 시뮬레이션, 문자열 (0) | 2025.02.03 |
[프로그래머스 입문문제] Day 13 문자열, 배열, 사칙연산, 수학, 조건문 (0) | 2025.01.31 |