CodingTest - Basic. with Swift

kihunism·2023년 6월 6일
1

Swift 언어로 프로그래머스 알고리즘 문제를 풀어보려고 한다.

이유는 간단하다.

  • 언어적 친숙화 : Swift라는 언어를 사용하고 있는데 익숙해지기 위함,
    ex) 함수 및 변수 선언, 기초적인 print()사용, 문자열 및 배열 등 사용하고 조작하기
  • 습관 들이기 : iOS 공부를 하는데에 있어서 중간중간마다 계속 풀어주면서 공부하는데에 습관을 들인다.
  • 문법 익히기 : 말 그대로, iOS의 기반언어인 Swift를 일단 능숙하게 다를 줄 알아야 한다.

프로그래머스 기준으로 완전 기초단계부터 공부 풀어보는 중이라서 지금부터 몇 개의 Swift관련 코딩테스트 글은 정말 쉬운 문제로 구성이 되어있다.

가장 중요한 것, 문법적 레퍼런스는 구글링을 당연히 하지만, 절대 절대 다른 사람이 푼 것은 레퍼런스로 참조하지 않는다.

문자열 출력하기

문자열 str이 주어질 때, str을 출력하는 코드를 작성해 보세요.

import Foundation

let s1 = readLine()!
print(s1)

a와 b 출력하기

정수 a와 b가 주어집니다. 각 수를 입력받아 입출력 예와 같은 형식으로 출력하는 코드를 작성해 보세요.

import Foundation

let n = readLine()!.components(separatedBy: [" "]).map { Int($0)! }
let (a, b) = (n[0], n[1])

print("a = \(a)")
print("b = \(b)")

문자열 반복해서 출력하기

문자열 str과 정수 n이 주어집니다.
str이 n번 반복된 문자열을 만들어 출력하는 코드를 작성해 보세요.

import Foundation

let inp = readLine()!.components(separatedBy: [" "]).map { $0 }
let (s1, a) = (inp[0], Int(inp[1])!)

for i in 0..<a {
    print(s1, terminator: "")
}

대소문자 바꿔서 출력하기

영어 알파벳으로 이루어진 문자열 str이 주어집니다. 각 알파벳을 대문자는 소문자로 소문자는 대문자로 변환해서 출력하는 코드를 작성해 보세요.

import Foundation
let s1 = readLine()!

extension String {
    subscript(index: Int) -> Character {
        return self[String.Index(encodedOffset: index)]
    }
}

func transformString(str: String) {
    
    var returnString = ""
    for i in 0..<str.count {
        if str[i].asciiValue! >= 65 && str[i].asciiValue! <= 90 {
            returnString += str[i].lowercased()
        } else {
            returnString += str[i].uppercased()
        }
    }
    
    print(returnString)
}

transformString(str: s1)

특수문자 출력하기

다음과 같이 출력하도록 코드를 작성해 주세요.

import Foundation

func specialPrint() {
    print(#"!@#$%^&*(\'"<>?:;"#)
}

specialPrint()

덧셈식 출력하기

두 정수 a, b가 주어질 때 다음과 같은 형태의 계산식을 출력하는 코드를 작성해 보세요.

import Foundation

let n = readLine()!.components(separatedBy: [" "]).map { Int($0)! }
let (a, b) = (n[0], n[1])

func plusPrint(a: Int, b: Int) {
    
    var result = a + b
    print("\(a) + \(b) = \(result)")
}

plusPrint(a: a, b: b)

문자열 붙여서 출력하기

두 개의 문자열 str1, str2가 공백으로 구분되어 입력으로 주어집니다.
입출력 예와 같이 str1과 str2을 이어서 출력하는 코드를 작성해 보세요.

import Foundation

let inp = readLine()!.components(separatedBy: [" "]).map { $0 }
let (s1, s2) = (inp[0], inp[1])


func blankDelete(s1: String, s2: String) {
    var str = s1 + s2
    var value = str.split(separator: " ").joined()
    print(value)
}

blankDelete(s1: s1, s2: s2)

문자열 돌리기

문자열 str이 주어집니다.
문자열을 시계방향으로 90도 돌려서 아래 입출력 예와 같이 출력하는 코드를 작성해 보세요.

import Foundation

let s1 = readLine()!

s1.forEach {
    print($0)
}

홀짝 구분하기

자연수 n이 입력으로 주어졌을 때 만약 n이 짝수이면 "n is even"을, 홀수이면 "n is odd"를 출력하는 코드를 작성해 보세요.

import Foundation

let a = Int(readLine()!)!

a % 2 == 1 ? print("\(a) is odd") : print("\(a) is even")

공부해야 할 목록

코딩테스트 문제를 풀고 나면 항상 공부해야 할 목록들을 정리하도록 한다.
공부해야 할 목록들은 원래 알았지만 헷갈리는 문법 및 코딩테스트를 하면서 알게된 문법들...

  • 스위프트 익스텐션(extension)
  • $0, $1 등 문법
  • forEach를 비롯한 forLoops 및 map 복습
profile
Code Occulter

0개의 댓글