👨🏻💻iOS 공부/Swift_알고리즘 풀이
[프로그래머스] 영어 끝말잇기
https://programmers.co.kr/learn/courses/30/lessons/12981?language=swift# 코딩테스트 연습 - 영어 끝말잇기 3 ["tank", "kick", "know", "wheel", "land", "dream", "mother", "robot", "tank"] [3,3] 5 ["hello", "observe", "effect", "take", "either", "recognize", "encourage", "ensure", "establish", "hang", "gather", "refer", "reference", "estimate", "executive"] [0,0] programmers.co.kr 끝말잇기의 규칙을 상기하며 풀이해보면 된다. 1. 앞단어..
[프로그래머스] 행렬의 곱셈
https://programmers.co.kr/learn/courses/30/lessons/12949?language=swift# 코딩테스트 연습 - 행렬의 곱셈 [[2, 3, 2], [4, 2, 4], [3, 1, 4]] [[5, 4, 3], [2, 4, 1], [3, 1, 1]] [[22, 22, 11], [36, 28, 18], [29, 20, 14]] programmers.co.kr 행렬의 곱셈을 코드로 나타내보는 문제. 기본적으로 행렬의 곱셈에 대해서는 알고 있을 거라 생각하고 진행해본다. (다 알겠지만 행렬의 곱이 성립하려면 (m x n) * (n x p)처럼 n만 같으면 된다는 건 인지하고 시작하자.) 1. 우변에 곱해줄 행렬의 행과 열을 바꿔준다. 2. 좌변의 행렬 원소와 1번의 결과를 z..
[LeetCode] Flood Fill
https://leetcode.com/problems/flood-fill/ Flood Fill - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 행렬에서 내가 선택한 값과 주변의 값들이 같을 경우 모두 newColor로 바꿔줘야 하는 문제 즉 아래 예시에서 내가 고른 값(1,1)은 1이다. 주변의 1들은 모두 2로 바뀌어야 한다는 것이다. 대신 대각선으로는 이동할 수 없고, 주변의 값이 다른 경우도 물론 이동할 수 없다. 즉 뿌리 뻗듯이 주변의 값들을 탐색하고 ..
[프로그래머스] 방금 그 곡
https://programmers.co.kr/learn/courses/30/lessons/17683?language=swift# 코딩테스트 연습 - [3차] 방금그곡 방금그곡 라디오를 자주 듣는 네오는 라디오에서 방금 나왔던 음악이 무슨 음악인지 궁금해질 때가 많다. 그럴 때 네오는 다음 포털의 '방금그곡' 서비스를 이용하곤 한다. 방금그곡에서는 TV, programmers.co.kr 방금 들었던 곡과 악보를 비교하여 알맞는 노래의 제목을 반환하는 문제. 생각보다 조건들이 까다로운 구현 문제이다. 1. #이 붙은 문자열들을 변환해야한다. 2. 실제 playtime을 구할 때 모두 분으로 변환하여 차이를 구해줘야 한다. 2-1. playtime 악보 길이 : 같..
[프로그래머스] 괄호 회전하기
https://programmers.co.kr/learn/courses/30/lessons/76502?language=swift# 코딩테스트 연습 - 괄호 회전하기 programmers.co.kr 그냥 쌩 구현 문제! 그냥 모든 값들을 if-else로 해주는 방법이 아니라 다른 방법으로 풀고 싶었는데 그런 문제가 아닌 것 같다... 그러다 보니 조금 번잡스럽게 풀이한 것 같다. 오히려 contains나 index를 활용하면 더 간단하게 풀 수 있을 것 같다. 그럼에도 우선 올바른 배열이 되기 위한 조건들을 충족시켜줘야 한다. 조건보다도 예외케이스를 생각하면서 풀이하면 좋을 듯 하다. 1. ( [ ) ] 2. [ { ) ] 3. { { { } 4. } { ( ) 이 정도 케이스만 고려해도 풀 수 있을 것이..
[LeetCode] Dynamic Programming
DP Easy문제들을 풀어보았다. 자세한 설명들은 주석에 달아두었다. easy부터 시작해서 감을 익혀 나가야겠다. 1. Best Time to Buy and Sell Stock Point 사고 파는 이윤을 최대로 구입가를 최저로 class Solution { func maxProfit(_ prices: [Int]) -> Int { // 현재 최대 수익은 0 var maxProfits = 0 // 현재 최소 구입가는 prices[0] var buy = prices[0] // price를 돌며 for i in 1.. [Int] { // 1의 갯수를 세줌 for i in 0...n { ans.append(String(i, radix: 2).filter {$0 == "1"}.count) } return ans ..