본문 바로가기

전체 글

(182)
[프로그래머스] Level 1. 시저 암호 안녕하세요!! 요즘 날씨가 너무 좋네요 ㅎㅎㅎㅎㅎㅎ 오늘은 시저 암호 문제를 풀어보겠습니다 :D 문제 원래 문제 설명을 안 하지만! 문제가 조금 헷갈리게 되어있어서 간단하게 적어보겠습니다. 대문자는 대문자로 소문자는 소문자로만 알파벳을 변경해야하고, 공백이 있으면 동일하게 들어가야합니다! 풀이 저는 문제를 보자마자 아 아스키코드를 사용해야겠구나! 라고 생각했어요ㅎㅎ 아래에 아스키 코드표 같이 첨부하겠습니다. 일단 문자열을 문자로 나누기 위해서 for문을 돌렸어요! asciiValue를 통해서 문자의 아스키코드 숫자를 num 변수에 저장해주고, 문제 설명할때 말했듯이 대문자는 대문자로 소문자는 소문자로 변환해주워야한다했죠? 그래서 대문자 65~90, 소문자 97~122까지 switch case문으로 나누..
[프로그래머스] Level 1. 약수의 합 안녕하세요! 오늘은 약수의 합 문제를 풀어보았습니다~~ 문제 풀이 저는 for-in 문을 사용해서 풀어보았습니다! 일단, n = 0이 아닐때에만 for 문을 n번 반복해줍니다. (n이 0이 아닐시) 그때 만약 n 과 i를 나머지 나눗셈으로 계산했을 때 0이면 (n이 i로 나누어지면 약수) result 변수에 i 를 더해줍니다. (약수의 합) 간단하죠?? 이제 괜찮다고 생각한 풀이를 보겠습니다. 1번 풀이 func solution(_ n:Int) -> Int { guard n != 0 else { return 0 } return Array(1...n).filter{n % $0 == 0}.reduce(0, +) } 오 이 풀이는 guard문과 고차함수 filter, reduce를 사용했네요? guard문은 ..
[프로그래머스] Level 1. 이상한 문자 만들기 안녕하세요!! 오늘은 이상한 문자 만들기 문제를 풀어보았습니다 :D 문제 풀이 일단 함수들부터 살펴보겠습니다!! components(separatedBy: " ") 은 띄어쓰기를 기준으로 문자열을 자르는 함수입니다. 자세한 설명은 Split과 Components 글을 참고해주세요 :D enumberated() 는 for-in문과 함께 사용하는 함수 입니다. for (n,c) in "String".enumberated() 위와 같은 형식으로 사용되며, "String" 문자열의 문자를 열거하고 문자열에서의 위치와 함께 각 문자를 출력합니다. 자세한 내용은 Apple Developer 과 [Swift] enumberated() 글을 참고해주세요! uppercased()는 소문자를 대문자로, lowercase..
[프로그래머스] Level 1. 정수 제곱근 판별 문제 풀이 저는 sqrt 함수를 사용해서 풀었습니다! sqrt 함수는 제곱근을 구해주는 수학함수 입니다. (pow는 제곱을 해주는 함수) n의 제곱근을 num 변수에 넣어주고, 삼항연산자를 이용해서 num의 제곱이 n 변수 값과 같다면 num + 1을 출력, 아니면 -1을 출력해줍니다. 정확성 무난무난한 것 같네요! 거의 비슷한 풀이를 가지고 있어서 오늘도 비교군은 없습니다! pow로 풀어봤을때 실패가 몇번 떠서 결국 그냥 계산 식을 넣었어요.. 왜 안되는지 의문 ㅠㅠ 오늘도 고생 많으셨습니다! 화이티이잉
[프로그래머스] Levle.1 콜라츠 추측 안녕하세요~~ 오늘은 콜라츠 추측 문제를 풀어보았습니다!! 문제 풀이 num 상수는 따로 변경이 불가능해서 number 변수에 num 값을 할당해 주었습니다. number이 1이 아니고 count 500보다 작거나 같을때까지 반복 (while number != 1 && count
[프로그래머스] Level 1. 히샤드 수 안녕하세요~~~ 오늘은 히샤드 수 문제를 풀어보았습니다! 날씨가 어제보단 좋네용 ㅎ히 문제 제가 푼 풀이 자릿수마다 더하기 위해서 일단 x 값을 String으로 저장해주었어요! 그 후에 for in 문으로 한 자리씩 result에 더해주고, 삼항 연산자를 사용해서 나머지가 0일 경우 (히샤드 수 일경우)에는 true 아닐 경우에는 false를 출력하도록 했습니다. 좋다고 생각한 풀이 func solution(_ x:Int) -> Bool { return x % String(x).reduce(0, {$0+Int(String($1))!}) == 0 } 동일하게 x 값을 String으로 변환하여 값을 더해주는 역할을 하는 고차함수 reduce를 사용하여 String의 첫번째 값과 다음 값을 더해줍니다. 그 후..
[프로그래머스] Level 1. x만큼 간격이 있는 n개의 숫자 안녕하세요 #.# 요즘 날씨가 너무 좋은 것 같아요!! 하지만 일교차가 크기때문에 감기 조심!! 문제 내가 푼 풀이 저는 for in 문을 사용하여 풀어보았습니다! n번만큼 x 값을 더하고 그 값들은 answer에 추가해줬습니다. 좋다고 생각한 풀이 고차함수를 사용하려고 생각해봤는데, 몇 번 반복하는지에 관련된 부분이 막혀서 그냥 for-in문으로 구성했었어요.. Array(1...n)으로 설정해주면되는 간단한 문제였네요!! map 고차함수로 전 값( $0 )과 x를 곱한 수를 Array에 추가해 준 풀이입니다. 정확성 비교 내가 푼 풀이 괜찮다고 생각한 풀이 for-in문이 정확성면에서는 더 좋네요? 한번 고차함수를 언제 사용하는지, 어떻게 사용해야 실용적으로 쓸 수 있는지 알아봐야겠어요..!
[프로그래머스] Level 1. 최대공약수와 최소공배수 안녕하세요리보고~! 오늘은 최대 공약수와 최소 공배수에 대해 풀어보겠습니다 :D 문제 내가 푼 풀이 저는 유클리드 호재법을 사용하여 풀어보았습니다! 유클리드 호재법에 대해 모르시는 분은 유클리드 호제법 (Euclidean-algorithm) feat. 최대공약수 을 참고해주세요! gcd 함수 a 와 b를 나눈 나머지 값이 0이 아니라면 다시 값을 대입해서 계산하고 0이면 b의 값을 return lcm 함수 a와 b를 곱한 값을 gcd 함수의 return 값과 나눈 몫을 return 이번에는 다 비슷하게 풀거나, 제 코드가 쪼금 더 나아서 좋은 코드는 넘어가도록 하겠습니다! 정확성 오 정확성도 괜찮은 것 같아요!! 역시 수학은 배신하지 않는다..!! 오늘은 유클리드 호제법 정리 글도 올렸으니! 짧게 설명하..