전체 글 63

프로그래머스 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

프로그래머스 LV.1 덧칠하기 스위프트

문제에 대한 이해 중복으로 칠 할 수 있음 배열안에 있는 숫자는 꼭 한번은 칠해야 함 예제 그림을 보면 이해하기 쉽습니다. paint2 를 보면 2 ~ 5까지 칠했고, 그 다음에는 3 ~ 6 까지 칠했습니다. 결론적으로는 시작을 section 첫번째 인덱스부터 시작해서 m-1만큼 더하면 되는 문제입니다. 그럼 코드를 작성해보겠습니다. 1. m-1을 활용하여 코드 작성하기 func solution(_ n:Int, _ m:Int, _ section:[Int]) -> Int { var answer = 0 // section의 첫번째 값과 m-1이 담기는 변수를 만들어줍니다. var painted = 0 for i in 0.. painted { painted = section[i] + m - 1 answer +..

알고리즘 2023.05.02

프로그래머스 LV.1 카드 뭉치

여기서 중요하게 봐야 할 점은 1. 카드를 순서대로 한 장씩 사용 2. 카드 뭉치의 단어 순서를 바꿀 수 없음 입 출력 예제를 봤을때 번뜩인 생각은 goal에서 cards1과 cards2를 하나씩 제거해보자 였습니다. 1. 변수를 만들어 줍니다. // 매개변수를 변수에 할당합니다. var cards1 = cards1, cards2 = cards2 cards1과 cards2 가 goal의 인덱스와 동일하다면 제거할 것이기 때문에 for문을 사용해줍니다. // goal의 요소를 하나씩 뽑아서 cards1과 cards2와 비교하기 위한 for문 for i in goal { // goal의 인덱스와 cards1의 첫번째 인덱스가 같다면 cards1의 첫번째 인덱스를 삭제 if i == cards1[0] { ca..

알고리즘 2023.04.30

프로그래머스 LV.1 [1차] 다트 게임

이게 레벨 1인가 싶기는 한데... 너무 어려운 문제였다 이 문제를 풀때 가장 중요한것은 이 조건문을 잘 이해하고 정리하는것이었다. 조건을 보면 1. 총 3번의 기회로 구성된다. --> 점수가 [ 0 , 0 , 0 ] 이런식으로 3번의 기회로 주어진다고 해석하면된다. 3. 점수와 함께 ~ 계산된다 --> String("S"), String("D"), String("T")에 따라 제곱하는 수가 달라진다. 4. 옵션으로 ~ 마이너스된다. --> 스타상(*)이면 해당 점수와 그 앞의 점수를 2배로 만든다. 아차상(#)이면 마이너스 5. 스타상 ~ 2배가 된다 --> 첫번째로 스타상(*)이 나오면 첫번째 스타상(*)의 점수만 2배가 된다. 6. 스타상 ~ 4배가된다 --> 스타상(*)이 두개 있으면 4배가 된다..

알고리즘 2023.04.29

iOS Custom Calendar 구현하기 5

안녕하세요 기본틀을 만들어졌으니 본격적으로 Custom Calendar를 만들어보겠습니다. 혹시 아직도 기본틀을 만들어 놓지 않으신 분들은 아래 블로그를 참고하시면 됩니다. https://yeomir.tistory.com/22 iOS Custom Calender 구현하기 Uikit으로 돌아왔습니다. 이번에는 라이브러리를 사용하지 않고 CustomCalendar를 구현해보도록 하겠습니다. 1) 최상단에 있는 View를 먼저 구현해보겠습니다. 최상단은 button, title, button button으로 구성 yeomir.tistory.com 자 시작! 클릭했을때 Cell의 배경 색을 바꾸게 하려면 어떻게 해야할까? 1) UICollectionViewDelegate의 메소드가 무엇이 있는지 찾아본다. //..

Swift 2023.04.20

iOS Cutsom Calendar 구현하기 4

마지막을 향해 달려가고 있습니다. 오늘 할 것은 버튼을 눌렀을때 액션을 만들어 줄겁니다. 1) previousButton Clicked 액션 만들기 extension 안에 // 이전 달로 가는 메서드 func minusMonth() { // date(byAdding: ~ ) 지정된 날짜에 구성요소를 추가하여 계산된 날짜를 반환 메소드 calendarDate = calendar.date(byAdding: DateComponents(month: -1), to: calendarDate) ?? Date() updateCalendar() } DateComponents에 대한 내용을 보면 DateComponents을 활용하여 시간대를 설정 할 수있습니다. 2) previoutButton에 addtarget을 통해 ..

Swift 2023.04.18