본문 바로가기

알고리즘 문제풀이

(16)
34. 문자열 내림차순으로 배치하기 문제 보자마자 정렬,,? 음!sorted 쓰면 되겠다 생각은 했는데!대문자가 소문자보다 작은 것으로 간주한다는 말 보고 음..? 모지?! 당황아스키 몰랐거든요.. 오늘도 새로운 지식 하나 적립내머리 += 1 ㅋㅋㅋㅋ  sorted(by: ) 은 ASCII에 따라 정렬이 이루어지며 ASCII 값은 각 문자를 숫자로 나타낸 것이다.대문자는 65-90, 소문자는 97-122 사이의 값을 가지므로sorted(by: ) 사용할 때 따로 대문자가 소문자보다 작은 것으로 간주한다는 조건을 코드에 안넣어주어도 된다(고 판단했다)
33. 약수의 개수와 덧셈 제곱근을 구하기 위해서 sqrt() 함수 이용 -> 사용하려면 import Foundation sqrt()함수는 Double 또는 Float 타입의 인수를 받기 때문에 Double형으로 받고 Int형으로 변환  밑에 깔끔한 풀이는 다른사람 풀이 중 맘에들어서 가져왔다 ㅎ몇줄 안되는거라서.. 어떤게 더 좋은함수라고 내가 말할 그런거는 없어서 판별은 못하겠지만 ㅎㅎ저 함수도 뜯어서 보고 기억하고 있자!   아 오늘 비몽사몽...머리가 안굴러가서 아 모지,, 모지.,,,, 한참했다,,약수의 개수가 짝수인거는 어떻게알지.. 이러고있었네..머리 빠딱빠딱 안굴러가냐!
프로그래머스 32. 내적 내가 작성하고 제출하면서도 '음.. 이건 1점짜리 ㅎ' 했는데 정말 1점 받았다 ㅋㅋㅋ순서대로 곱해주고 더해주는거라 reduce함수도 사용해보고 싶었는데 생각이 잘 나지 않았고.. 당연히 사용한 사람 있겠지? 했는데댓글이 엄청 달린 풀이가 있었다! 밑에 작성된 코드가 바로 그 코드였고 ㅎzip, map, reduce 함수들을 사용해서 간단한 코드를 만들었더라.. zip(a, b)zip함수는 두 배열을 받아 각 배열의 요소를 튜플로 묶어 새로운 시퀀스를 만드는 함수이다.예를들어 a = [1, 2, 3, 4]   b = [5, 6, 7, 8] 이면 zip(a, b)는 [(1, 5), (2, 6), (3, 7), (4, 8)] 이 된다. .map(*)map 함수는 시퀀스의 각 요소에 주어진 함수를 적용하여 새..
프로그래머스 31. 수박수박수박수박수박수? 오늘의 알고리즘!!! 문자열 반복 리턴하는 코드 만들기 역시 아무래도.. 이해가 제일 느린듯ㅎㅎ주석을 먼저 달아줬슴다수박수박,, 반복,,이라,, 길이에 따라서 다르게,,1글자면 수 2글자면 수박,, 홀수일때 수 짝수일때 박,?반복문에홀수짝수 확인하는 함수,,!  쪼렙은 아직 for문 밖에 못쓰네요? 저 짧게 사악 정리한 풀이 맘에 든다..다른사람 풀이인데.. 언제쯤 나도 저렇게 쓸라나..? 아주 맘에 드는 코드인뎅 ㅎ 내기준! ㅎ
프로그래머스 30. 가운데 글자 가져오기 문제 설명단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.재한사항s는 길이가 1 이상, 100이하인 스트링입니다. 주석부터 달기 괜찮은거 같아서 문제풀기 전에 주석을 달아보고 생각을 해봤다어떻게 가운데 글자를 추출해낼까..?찾아보니 index(_:offsetBy:) 메서드가 있었다..! s.index(s.startIndex, offsetBy: n) - 문자열의 시작 인덱스로부터 n만큼 떨어진 인덱스를 반환s.index(startIndex, offsetBy: n) - startIndex로부터 n만큼 떨어진 인덱스를 반환나는 시작 인덱스로부터 n 만큼 떨어진 인덱스를 반환해야 했다어떻게 사용하는지 잘 모르겠어서 지티피한테 물어..
프로그래머스 29. 제일 작은 수 제거하기 if arr.isEmpty || arr.count == 1 이거까지는 완전 수월,,, 하고 제일 작은 수 찾을 함수를 고민,, 하다가 정렬해야하니까 sorted 함수를 사용하고 싶었는데,,결국 해결하지 못했다...ㅋ 해보려고한거 까먹음 ㅠ 꼭 다시 해보기!!!!!!!!!! 메모 별 백개
프로그래머스 28. 없는 숫자 더하기 subtracting 메서드는 스위프트의 Set 타입에서 제공되는 메서드로, 한 집합에서 다른 집합에 포함된 요소들을 제거한 새로운 집합을 반환한다. 이 메서드를 사용하여 두 집합의 차집합을 구할 수 있다. 예를들면 집합 A와 B가 있을 때,A.subtracting(B) 는 집합 A에서 집합 B에 있는 모든 요소를 제거한 새로운 집합을 반환한다.subtracting 메서드를 사용하면 두 집합 간의 차집합을 간단하고 효율적으로 계산할 수 있다.   다른사람 풀이 중 매우 깔끔한 풀이를 발견했다filter 와 reduce 함수를 사용하여 간결하게 문제해결을 한 경우이다..filter { !numbers.contains($0) }filter 메서드는 주어진 조건을 만족하는 요소만을 포함하는 새로운 배열을 생성..
핸드폰 번호 가리기 관련.. suffix() - 문자열의 뒤부터 원하는 길이만큼 추출해 줌prefix() - 문자열의 앞부터 원하는 길이만큼 추출해 줌 String(repeating:count:)주어진 문자열을 반복해 새로운 문자열 생성하는 이니셜라이저