안녕하세요! 오늘은 이상한 문자 만들기, 자연수 내림차순으로 배치하기, 정수 제곱근 판별 문제를 풀어보았습니다.
1. 이상한 문자 만들기
이상한 문자만들기는 한 단어의 홀수는 대문자 짝수는 소문자로 만들어서 푸는 문제입니다!
한 문장의 홀수와 짝수로 빠르게 문제를 풀어버리고 틀려서 고생했습니다. ㅠㅠ
문제를 푸실 때 문제를 코딩하는 시간과 비례하게 문제를 읽고 생각해보는 시간을 다들 가져보시는것도 좋습니다!
예전부터 문제만 보면 #include <iostream> 부터 넣어버리는 습관을 없애야겠다고 생각했습니다!
문제를 보면 문자를 아스키코드로 바꾸고 그 글자가 소문자인지 대문자인지 판별 후 홀수번째에 대문자로 넣어주고 짝수번째에 소문자를 넣어주면 풀 수 있는 간단한 문제입니다!
func solution(_ s:String) -> String {
var result = ""
var count = 0
for index in s.utf8 {
if index != 32 {
if count%2 == 1{
if index >= 97{
result += String(UnicodeScalar(index))
}
else {
result += String(UnicodeScalar(index+32))
}
}
else {
if index >= 97{
result += String(UnicodeScalar(index - 32))
}
else {
result += String(UnicodeScalar(index))
}
}
}
else {
count = 1
result += String(UnicodeScalar(index))
}
count += 1
}
return result
}
2. 자연수 내림차순으로 배치하기
자연수 내림차순으로 배치하기 문제는 Int64를 받아 내림차순으로 정렬해주면 되는 문제입니다!
Int64를 받아 한자리수씩 배열에 넣습니다!
배열에 넣는 방법은 %10값을 넣고 다음번에는 /10을 해주고 반복하면 한자리씩 받아올 수 있습니다!
이후 내림차순으로 정렬하는 방법은 sorted by에 후행 클로져를 이용하여 내림차순으로 쉽게 정렬할 수 있습니다!
그리고 다시 배열의 값을 하나씩 합쳐주는 과정을 통해 문제를 해결할 수 있습니다.
func solution(_ n:Int64) -> Int64 {
var nArray:[Int64] = [Int64]()
var N = n
var answer:Int64 = 0
while N > 0 {
nArray.append(N%10)
N = N/10
}
nArray = nArray.sorted(by :{ (int1:Int64, int2:Int64) -> Bool in
return int1 > int2
})
for i in 0..<nArray.count{
answer = answer * 10
answer += nArray[i]
}
return answer
}
3. 정수 제곱근 판별
정수 제곱근 판별은 Foundation의 sqrt를 이용하면 쉽게 풀 수 있습니다!
sqrt를 이용하면 됩니다!
sqrt해서 나온 수가 정수일 경우 제곱근이기 때문에 정수인지 아닌지 확인해줍니다.
그리고 정수라면 1 더해서 제곱한 결과를 return아니면 -1을 return하면 문제를 해결하실 수 있습니다.
import Foundation
func solution(_ n:Int64) -> Int64 {
var result: Int64 = 0
let number = sqrt(Double(n))
if number == Double(Int64(number)) {
result = Int64((number + 1) * (number + 1))
} else {
result = -1
}
return result
}
'Algorithm Problem Solving > Programmers' 카테고리의 다른 글
[프로그래머스] 코딩테스트 연습 2019 KAKAO BLIND RECRUITMENT 오픈채팅방 with Swift (0) | 2021.12.13 |
---|---|
[프로그래머스] 연습문제 N개의 최소공배수 with Swift (0) | 2021.12.08 |
[프로그래머스] 서울에서 김서방 찾기, 소수 찾기, 시저 암호 (0) | 2021.12.07 |
[프로그래머스] 문자열 내 p와 y의 개수, 문자열 내림차순으로 배치하기, 문자열 다루기 기본 with Swift (0) | 2021.12.06 |
[프로그래머스] 나누어 떨어지는 숫자 배열, 두 정수 사이의 합, 문자열 내 마음대로 정렬하기 with Swift (0) | 2021.12.06 |