프로그래머스 LV.2 영어 끝말잇기 영어 끝말잇기를 풀던 중 삽질한 경험을 풀고자 한다. 처음 풀었던 내용 import Foundation func solution(_ n:Int, _ words:[String]) -> [Int] { var wordDB: [String] = [] for i in 0.. [Int] { var wordDB: [String] = [] for i in 0.. [Int] { var wordDB: [String] = [] for i in 0.. 알고리즘 2023.07.23
백준 팰린드롬수(1259번) 스위프트 풀이 ● 문제 핵심 - 기존 글자를 거꾸로 했을때와 같을때 비교 입력의 마지막 줄에 0이 나오면 받지 않는다고 되어 있는데 이것을 구현하는데 While문을 사용했다. var inputArray: [String] = [] while true { let input = readline()! // "0"이 들어오면 반복문 종료 if input == "0" { break } // 배열에 담아주기 inputArray.append(input) } // 여기서 조건이 없으면 계속 받게 되고 탈출 할 수 없게 된다. // 필요한 조건은 마지막 줄에 0 이 나오면 반복문을 끝내는 조건을 추가해준다. 여기까지 구현했으면 다 풀었다 봐도 무방하다 이제 배열에 담긴 문자를 거꾸로 한것과 비교하는 코드는 작성하면 된다. var inp.. 알고리즘 2023.06.25
프로그래머스 LV.1 개인정보 수집 유효기간 스위프트 오늘은 2023 카카오 블라인드 코테 문제였던 것을 풀어보겠습니다 확실히 정답률이 낮네요... ㅎㅎ 자 그럼 시작하겠습니다. 지문을 읽어보면 중요한 부분이 있습니다. 즉 , if 현재 날짜 > 유효기간 날짜 { 파기 } 예시 1) 현재 날짜 ( 2022.05.19 ) > 유효기간 날짜 ( 2021년 11월 1일 ) ? 파기 : 파기 안함 => 파기 예시 2) 현재 날짜 ( 2022.05.19 ) > 유효기간 날짜 ( 2022년 6월 28일 ) ? 파기 : 파기 안함 => 파기 안함 예시 3) 현재 날짜 ( 2022.05.19 ) > 유효기간 날짜 ( 2022년 5월 18일 ) ? 파기 : 파기 안함 => 파기 예시 4) 현재 날짜 ( 2022.05.19 ) > 유효기간 날짜 ( 2022년 5월 19일 ).. 알고리즘 2023.05.22
프로그래머스 LV.1 달리기 경주 스위프트 코드 실행을 통과한다고 답은 아니다... 문제에 1,000,000의 조건이 있으면 시간 복잡도를 생각해보자 자 그럼 시작해보겠습니다. 지문을 보면 어렵지만은 않은 지문입니다. 이름이 불리면 한칸씩 앞으로 간다 , 앞 칸에 있던 것은 뒤로 한칸 밀린다. 즉, index -1 , 앞에 있던 문자 index +1 이게 포인트 인거 같습니다. 자 그러면 한번 적어보겠습니다. for i in 0.. [String] { var result: [String] = players var callingDic: [String:Int] = [:] for (index, player) in players.enumerated() { callingDic[player] = index } print("callingDic:",callin.. 알고리즘 2023.05.15
프로그래머스 LV.1 성격 유형검사하기 스위프트 카카오 LV.1 성격 유형 검사하기 문제를 풀어봤는데, 뭔가 어렵게 느껴진다면 어렵고 쉽게 느껴진다면 쉽게 느껴지는 문제였습니다. ??? 그게 무슨 말인교? 복잡해 보이지만 예시를 보면서 하나씩 이해하다 보니 풀리는 문제였습니다. 그렇지만 3시간 걸렸....ㄷ..ㅏ..ㅠ 그래도 풀었다는게 중요한거지!! 지문이 길기 때문에 설명하면서 중간에 필요한 부분을 캡쳐해서 보여드리겠습니다. 자 스타트~! 문제를 끝까지 읽었다면 가장 중요하게 생각하는 부분이 해당 지문이었습니다. 이 지문을 읽고 흠.. 그러니까 비동의 관련 선택지( 1 ~ 3 ) 를 선택하면 어피치형, 동의 관련 선택지 ( 5 ~ 7 ) 를 선택하면 네오형 의 점수를 얻음 choices에 따라 선택지에 해당하는 점수를 얻음 한 예시로 ["AN"] ,.. 알고리즘 2023.05.13
프로그래머스 LV.1 크레인 인형뽑기 게임 스위프트 카카오 코테 문제라고 하면 ... 뭔가 떨리기도하고 어려울거 같기도 하고 맞추면 희열을 느낄거 같기도 하고... 그런건 저만 그런가요? ㅎㅎ 오늘은! 크레인 인형 뽑기 게임을 풀어봤습니다. 제가 이해하고 푸는 방식이다보니... 조금 중구난방이 일 수 있습니다 ㅎㅎ 간단하게 지문을 보겠습니다. 위의 지문이 핵심입니다. 충분히 이해하고 다음 지문을 읽어보면 뭔가... 애니팡 느낌이 나는거 같은... 이해가 쉽게 됩니다. 저는 문제를 풀때 노트에 끄적이면서 생각을 하는 편입니다. 흠... 글씨를 원래 잘쓰는데 펜이 안좋아서 그런겁니다.. ㅠ 흠... 일단 moves 요소에 따라 크레이이 움직이니... 우리는 0번째부터 시작할것이기 때문에 moves의 요소들을 -1씩 해줍니다. let crainIndex = m.. 알고리즘 2023.05.09
프로그래머스 LV.1 옹알이(2) 스위프트 실패케이스와 이해 과정을 블로그를 작성했습니다. 성공 케이스만 보고 싶으신 분들은 맨 아래 코드를 확인하시면 됩니다. 지문을 살펴봤을 때 가장 핵심인 부분은 1. 네 가지 발음과 네 가지 발음을 조합해서 만들 수 있는 발음 밖에 없음 == > 즉, ["aya", "ye", "woo", "ma"] 과 이것을 조합해서 만들수 있는 발음밖에 하지 못함 ex) ["wooma"] 게임... 2. 연속해서 발음하는 것은 어려워함 첫번째로 주어지는 babbling에 ["aya", "ye", "woo", "ma"] 포함여부를 확인해야한다. 흠... 그러면 contains를 쓰면 되는건가? ... 라고 생각했지만 따로 처리를 어떻게 해줘야할지 몰라서... 스킵... 그렇다면... contains느낌으로 포함되어 있다면 .. 알고리즘 2023.05.07
프로그래머스 LV.1 숫자 짝꿍 스위프트 처음 이 문제를 읽고 이해하는데는 5분이 걸렸지만... 푸는데는... 근 3시간정도 걸린거 같다... ㅠ 들어가기에 앞서 풀이를 보고 싶다면 맨 아래 코드만 보면 됩니다. 하지만 이러한 실패 케이스와 플로우를 따라가며 왜 그런코드가 나왔는지 이해하는것을 추천합니다 자 들어가보면 처음 예제 지문을 봤을때 조금 아리송 했는데 입출력 예제를 보니 바로 이해가 갔다 지문을 정리하자면 1. X, Y의 짝꿍이 존재하지 않으면 - 1 2. X, Y의 짝꿍이 존재하지만 0만 있으면 0 3. 그것도 아니라면 가장 큰 정수 만들기 참 쉽죠... 그렇다면 코드를 작성해보겠습니다. 첫번째 실패 케이스 import Foundation func solution(_ X:String, _ Y:String) -> String { //.. 알고리즘 2023.05.05
번외) for문 발전 에라토스테네스의 체에 대해 공부하다. 오늘은 에라토스테네스의 체에 대해 알아볼 겁니다. 그래서 에라토스테네스의 체가 뭔데? 처음엔... 발음도 힘들었다 뭔데 소수판별만 나오면 에라토스테네스의체를 사용해서 풀어야 효율적이라고 나오고 Chatgpt에 물어봐도 이렇게 답변해주는건데? 에라토스테네스의 체 정의를 보면 이렇게 설명한다 2부터 시작하는 자연수들 중에서 소수(약수가 1과 자기 자신인 수)를 찾아내는 방법입니다. 작은 수부터 차례대로 배수들을 제외해가면서 소수를 찾아내는 방법입니다 조금 더 자세히 설명을 하면 2부터 20까지의 자연수 중에서 소수를 찾는다고 하면, 첫번째 2 다음 2, 4, 6, 8, 10 ... (제외) 두번째 3 다음 3, 6, 9, 12 ...(제외) 세번째 4 첫번째에서 (제외)당함 네번째 5 다음 10, 15, 2.. 알고리즘 2023.05.04
프로그래머스 LV.1 기사단원의 무기 솔직히 이 문제를 보고 너무 쉽다고 느꼈습니다. 이게 정답률이 이렇게나 낮다고...?? 네... 오만이고 착각이었습니다. 역시 걸리는 시간초과... ㅠㅠ 그럼 문제를 뜯어보겠습니다. 요약하자면 1. number까지의 약수의 갯수를 구하고 2. limit보다 크면 power, 작으면 number의 요소 --> 모두 더하기 실패 케이스 첫번째 1. 첫번째 방법 func solution(_ number:Int, _ limit:Int, _ power:Int) -> Int { // 해당 number의 약수의 갯수를 담는 배열을 만들고 // 약수의 갯수가 limit을 넘어가지 않으면 배열의 모든 수를 더한다 // 만약 약수의 갯수가 limit을 넘어가면 power로 변환 해준다 var countArray: [Int.. 알고리즘 2023.05.03