TIL 20240523 코딩테스트 (3)

2024. 5. 23. 08:57코딩테스트

오늘 오랜만에 다시 코딩 테스트 관련된 게시물을 작성하고자 한다...

최종프로젝트하느냐고 정신없어서 코테를 꾸준히 못풀었는데!

수료하고 조금씩 풀고있는 것을 정리하고자 한다 ㅎㅎ

이젠 못해도 한 개씩이라도 풀어봐야지ㅣ,,,

그러므로 직접 프로그래머스에서 푸는 거여서,,, 순서없이 커밋한 순서대로 정리를 할 예정이라 뒤죽박죽이다!!

그래도 공부한 기록이니 올려야지~


// 문자열 출력하기
fun main(args: Array<String>) {
    val s1 = readLine()
    println(s1)
}

 

readline() 은 주어진 파일에서 완전한 한 줄을 읽는 데 도움이 되는 파일 메서드라고 한다!!

단순히 문자열을 출력하는 것이므로 println을 해줘서 출력해주면 금방 해결할 수 있다!!

 

 


// a와 b 출력하기
fun main(args: Array<String>) {
    val (a, b) = readLine()!!.split(' ').map(String::toInt)

    println( "a = $a \nb = $b")
}

 

a = 

b =

이런식으로 값이 나와야 하는 요건이 었다. 그래서 "\n"을 이용해서 줄바꿈을 해주었고!

split으로 분리하여 a와 b를 map으로 돌려주었다.

 

 


// 문자열 반복해서 출력하기
fun main(args: Array<String>) {
    val input = readLine()!!.split(' ')
    val s1 = input[0]
    val a = input[1]!!.toInt()
    for(i in 1..a){
        print(s1)
    }
}

 

input은 작성한 걸 split으로 나누워주고 있고 s1, a로 선언을 해주었다.  문자열을 반복해서 출력을 해야하므로 for의 반복문을 사용했다. 생각보다 엄청 어렵고 그런건 아니었지만 그래도 조금은 신경 써야 하는 문제였다.

 

 


// 대소문자 바꿔서 출력하기
fun main(args: Array<String>) {
    val s1 = readLine()!!
    val result = s1.map {
        when{
            it.isUpperCase() -> it.lowercase()
            it.isLowerCase() -> it.uppercase()
            else -> it
        }
    }.joinToString("")
    println(result)
}

 

s1을 map으로 돌려주고 result 값에 넣어준다.

만약에 대문자인 경우 소문자로, 소문자인 경우 대문자로 변경해주고

리스트의 원소들을 모두 연결한 하나의 문자열로 나뉘어주는 joinToString을 사용해준다!

 

 


// 특수문자 출력하기
fun main(args: Array<String>) {
    val result = "!@#$%^&*(\\'\"<>?:;"
    println(result)
}

 

특수문자를 출력하는 문제였는데,, 사실 어떤식으로 해야할지 고민이 많았다,,

그냥 단순히 특수문자만 입력하면 될까? 싶었고 그렇게 입력했으나 역시나 정답이 될 수 없었다...

여러 번 시도를 했음에도 제대로 알 수 없었기 때문에 다른 분들은 어떤식으로 푸셨는지에 대해 찾아보았다. 

문자열 이스케이프 처리만 하면 된다. 이스케이프 처리할 문자열은 "\"과 큰따옴표를 추가해준다고 하면 된다고 해서 위에 바와 같이 변경해주었더니 정답이 되었다...

 

이때, 이스케이프 처리는 무엇일까?

이스케이프(escape)는 컴퓨터 과학에서 특정 문자가 가진 원래의 의미를 잠시 무시하고 다른 목적으로 사용하게 하는 방법을 의미한다. 이스케이프는 특수 문자나 제어 문자를 표현할 때 흔히 사용된다.

 

예를 들어, 문자열 내에서 따옴표(")는 문자열의 시작과 끝을 표시하는 데 사용되는데 문자열 안에 따옴표를 그 자체로 포함하고 싶을 때는 어떤식으로 표시를 하는 걸까? 이때 따옴표 문자 앞에 이스케이프 문자인 역슬래시()를 붙여서 따옴표가 문자열의 끝을 나타내는 것이 아니라 그냥 일반 문자임을 나타낼 수 있다고 한다.

 

 


// 덧셈식 출력하기
fun main(args: Array<String>) {
    val (a, b) = readLine()!!.split(' ').map(String::toInt)
    println("$a + $b = ${a + b}")
}

 

처음에는 이를 보자마자 쉽네 하고 풀었다가  ${a} + ${b}로 풀었더니 그냥 35로 나왔던가 그랬던것 같다!! 그래서 아예 중괄호 안에 a와 b를 넣어주었고! 이를 출력하니 원하는 답을 얻을 수 있었다!!

 

 

'코딩테스트' 카테고리의 다른 글

TIL 20240601 코딩테스트 (6)  (0) 2024.06.01
TIL 20240528 코딩테스트 (5)  (2) 2024.05.28
TIL 20240525 코딩테스트 (4)  (0) 2024.05.25
TIL 20231216 코딩테스트 (2)  (0) 2023.12.16
TIL 20231209 코딩테스트 (1)  (0) 2023.12.09