프로그래머스 기초문제

[프로그래머스 기초문제] Day 3

Devleoper_yh 2025. 1. 6. 22:30
반응형

1. 문자열 섞기

길이가 같은 두 문자열 str1과 str2가 주어집니다.
두 문자열의 각 문자가 앞에서부터 서로 번갈아가면서 한 번씩 등장하는 문자열을 만들어 return 하는 solution 함수를 완성해 주세요.

제한사항

  • 1 ≤ str1의 길이 = str2의 길이 ≤ 10
    • str1과 str2는 알파벳 소문자로 이루어진 문자열입니다.

입출력 예

str1str2result

str1 str2 result
"aaaaa" "bbbbb" "ababababab"

 

제출 답안

import Foundation

func solution(_ str1:String, _ str2:String) -> String {

	// 문자열을 배열로 변환
    let a1 = Array(str1)
    let a2 = Array(str2)
    
    // a1 요소의 개수만큼 result에 하나씩 더한다
    var result = ""
    for i in 0..<a1.count{
        result.append(a1[i])
        result.append(a2[i])
    }
    
    return result
}

2. 문자 리스트를 문자열로 변환하기

문자들이 담겨있는 배열 arr가 주어집니다. arr의 원소들을 순서대로 이어 붙인 문자열을 return 하는 solution함수를 작성해 주세요.

제한사항

  • 1 ≤ arr의 길이 ≤ 200
    • arr의 원소는 전부 알파벳 소문자로 이루어진 길이가 1인 문자열입니다.

입출력 예

arr result
["a","b","c"] "abc"

 

제출 답안

import Foundation

func solution(_ arr:[String]) -> String {
    var result: String = ""
    
    // 배열 arr의 개수만큼 반복하고 요소를 result에 더한다.
    for i in 0..<arr.count {
        result.append(arr[i])
    }
    return result
}

3. 문자열 곱하기

문자열 my_string과 정수 k가 주어질 때, my_string k번 반복한 문자열을 return 하는 solution 함수를 작성해 주세요.

제한사항

  • 1 ≤ my_string의 길이 ≤ 100
  • my_string은 영소문자로만 이루어져 있습니다.
  • 1 ≤ k ≤ 100

입출력 예

my_string k result
"string" 3 "stringstringstring"
"love" 10 "lovelovelovelovelovelovelovelovelovelove"

입출력 예 설명

입출력 예 #1

  • 예제 1번의 my_string은 "string"이고 이를 3번 반복한 문자열은 "stringstringstring"이므로 이를 return 합니다.

입출력 예 #2

  • 예제 2번의 my_string은 "love"이고 이를 10번 반복한 문자열은 "lovelovelovelovelovelovelovelovelovelove"이므로 이를 return 합니다.

제출 답안

import Foundation

func solution(_ my_string:String, _ k:Int) -> String {
    return String(repeating: my_string, count: k)
}

// 문제 설명에 나온 “반복”이라는 단어 때문에 처음에는 반복문으로 구현할 생각이 들었다. 
// 하지만 이전 문제에서 소개된 String(repeating: , count: ) 메서드를 사용했다. 
// 출제 의도는 각 언어의 반복 관련 메서드를 활용하라는 것이라고 생각했다.

4. 더 크게 합치기

연산 ⊕는 두 정수에 대한 연산으로 두 정수를 붙여서 쓴 값을 반환합니다. 예를 들면 다음과 같습니다.

  • 12 ⊕ 3 = 123
  • 3 ⊕ 12 = 312

양의 정수 a와 b가 주어졌을 때, a  b와 b  a 중 더 큰 값을 return 하는 solution 함수를 완성해 주세요.

단, a  b와 b  a가 같다면 a  b를 return 합니다.

 

제한사항

  • 1 ≤ a, b < 10,000

입출력 예

a b result
9 91 991
89 8 898

 


입출력 예 설명

입출력 예 #1

  • a  b = 991 이고, b  a = 919 입니다. 둘 중 더 큰 값은 991 이므로 991을 return 합니다.

입출력 예 #2

  • a  b = 898 이고, b  a = 889 입니다. 둘 중 더 큰 값은 898 이므로 898을 return 합니다.

제출 답안

import Foundation

func solution(_ a:Int, _ b:Int) -> Int {
    // a ⊕ b와 b ⊕ a 값을 문자열로 결합한 후 정수로 변환
    let ab = Int("\(a)\(b)")!
    let ba = Int("\(b)\(a)")!
    
    // 더 큰 값을 반환, 같으면 a ⊕ b를 반환
    return max(ab, ba)
}

// 1. 문자열 결합을 활용한 연산: ("\(a)\(b)")
// 2. 결합된 문자열을 정수로 변환: Int("\(a)\(b)")!
// 3. 두 값 중 더 큰 값을 반환: return max(ab, ba)
// 4. 항상 양의 정수라고 명시: 강제 언래핑(!)
  1. 문자열 결합을 활용한 연산: ("\(a)\(b)")
  2. 결합된 문자열을 정수로 변환: Int("\(a)\(b)")!
  3. 두 값 중 더 큰 값을 반환: return max(ab, ba)
  4. 항상 양의 정수라고 명시: 강제 언래핑(!)

https://developer.apple.com/documentation/swift/array/max()

 

max() | Apple Developer Documentation

Returns the maximum element in the sequence.

developer.apple.com


5. 두 수의 연산값 비교하기

연산 ⊕는 두 정수에 대한 연산으로 두 정수를 붙여서 쓴 값을 반환합니다. 예를 들면 다음과 같습니다.

  • 12 ⊕ 3 = 123
  • 3 ⊕ 12 = 312

양의 정수 a와 b가 주어졌을 때, a  b와 2 * a * b 중 더 큰 값을 return하는 solution 함수를 완성해 주세요.

단, a  b와 2 * a * b가 같으면 a  b를 return 합니다.

 

제한사항

  • 1 ≤ a, b < 10,000

입출력 예

a b result
2 91 364
91 2 912

입출력 예 설명

입출력 예 #1

  • a  b = 291 이고, 2 * a * b = 364 입니다. 둘 중 더 큰 값은 364 이므로 364를 return 합니다.

입출력 예 #2

  • a  b = 912 이고, 2 * a * b = 364 입니다. 둘 중 더 큰 값은 912 이므로 912를 return 합니다.

제출 답안

import Foundation

func solution(_ a:Int, _ b:Int) -> Int {
    var ab = Int("\(a)\(b)")!
    var t_ab = 2 * a * b 
    
    // max() - 비교하는 두 값이 같을 경우 기본적으로 앞에 값을 반환한다.
    return max(ab, t_ab)
}

반응형