iyOmSd/Title: Algorithm풀이 28

[Swift Algorithm] 68936 쿼드압축 후 개수 세기 (월간 코드 챌린지1)

programmers.co.kr/learn/courses/30/lessons/68936 코딩테스트 연습 - 쿼드압축 후 개수 세기 [[1,1,0,0],[1,0,0,0],[1,0,0,1],[1,1,1,1]] [4,9] [[1,1,1,1,1,1,1,1],[0,1,1,1,1,1,1,1],[0,0,0,0,1,1,1,1],[0,1,0,0,1,1,1,1],[0,0,0,0,0,0,1,1],[0,0,0,0,0,0,0,1],[0,0,0,0,1,0,0,1],[0,0,0,0,1,1,1,1]] [10,15] programmers.co.kr 풀이방법 핵심은 '해당 영역의 요소들이 모두0 혹은 모두1인 경우 하나로 압축 할 수 있다.' 겟죠?! 우선그럼 해당 영역을 쪼개야겟죠 예를들어 4칸이있다고하면 행과 열 모두 범위가 0..

[Swift Algorithm] 42860 조이스틱 (프로그래머스)

programmers.co.kr/learn/courses/30/lessons/42860 코딩테스트 연습 - 조이스틱 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. ▲ - 다 programmers.co.kr 풀었던 문제를 또 풀어봤는데... 못풀었어요 ㅠ.. 후... Level2라하지만 2가 아닌거같구요... 좌로가는경우 우로가는경우를 각각 검사해주는 로직으로 풀엇지만 ABABAAAAAB 와 같은 경우에는 도중에 되돌아가는게 이득이기때문에 이런 예외케이스를 통과하지못했어요 더 효율적으로 풀기위해 아래와같이 풀었어요 풀이방법 위아래로 알파벳을 체크하는 것은 좌우..

[Swift Algorithm] 12914 멀리 뛰기 (프로그래머스)

programmers.co.kr/learn/courses/30/lessons/12914 코딩테스트 연습 - 멀리 뛰기 효진이는 멀리 뛰기를 연습하고 있습니다. 효진이는 한번에 1칸, 또는 2칸을 뛸 수 있습니다. 칸이 총 4개 있을 때, 효진이는 (1칸, 1칸, 1칸, 1칸) (1칸, 2칸, 1칸) (1칸, 1칸, 2칸) (2칸, 1칸, 1칸) (2칸, 2 programmers.co.kr 풀이방법 1칸 까지가는경우 2칸 까지가는경우 3칸 까지가는경우를 그리다보면 중복되는 곳을 지나는 것을 느낄수 있을거에요 도형이 주어지고 해당 도형을 채워라 하는 문제와 같은느낌이 났어요 점화식? 을 세워서 풀수 있는 문제죠 n = n-1 + n-2 같은 공식으로요 ㅎㅎ 3칸일때 1칸까지 가는것에 + 2 2칸까지가는 것에..

[Swift Algorithm] 60062 외벽 점검 (2020 카카오 블라인드)

programmers.co.kr/learn/courses/30/lessons/60062 코딩테스트 연습 - 외벽 점검 레스토랑을 운영하고 있는 스카피는 레스토랑 내부가 너무 낡아 친구들과 함께 직접 리모델링 하기로 했습니다. 레스토랑이 있는 곳은 스노우타운으로 매우 추운 지역이어서 내부 공사를 하는 programmers.co.kr 풀이방법 너무너무너무너무...너무 어려웠던 문제였어요... 하다가 포기할뻔햇어요 ㅠㅠ 머리로는 알겠는데 코드로 구현이안되는... 뇌가하얘져서 바보가된기분이엿어요 (사실바보일수도잇지만..) 반시계와 시계방향으로 생각하는 그런 방법이잇는데 원이기때문에 같은 방법이라고 생각할 수 있기때문에 고려안해도 상관없어요 우선 모든 경우를 탐색해야해요 문제의 예시를보면 취약지점이 [1, 5, ..

[Swift Algorithm] 12904 가장 긴 팰린드롬 (프로그래머스)

programmers.co.kr/learn/courses/30/lessons/12904 코딩테스트 연습 - 가장 긴 팰린드롬 앞뒤를 뒤집어도 똑같은 문자열을 팰린드롬(palindrome)이라고 합니다. 문자열 s가 주어질 때, s의 부분문자열(Substring)중 가장 긴 팰린드롬의 길이를 return 하는 solution 함수를 완성해 주세요. 예를들 programmers.co.kr 풀이방법 문제를 보고 떠오른 해결방법은 abcba가 있다면 abcba -> a / cba abcba -> ba / ba abcba -> cba / a 이런 식으로 인덱스를 옮겨가며 좌우를 비교하려는 생각을 했어요 좌우 문자가 같으면 현재 길이를 +2를 해주는 식으로 늘려갔어요 이런식으로 하는게 틀린건 아닌가봐요 정석은 뭔지..

[Swift Algorithm] 72411 메뉴 리뉴얼 (2021 카카오 블라인드)

programmers.co.kr/learn/courses/30/lessons/72411 코딩테스트 연습 - 메뉴 리뉴얼 레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 programmers.co.kr 풀이방법 A~Z의 메뉴중 인기가 많은 조합을 골라내는 문제에요 누군가는 ABC를 시킨다면 A, AB, AC, BC, ABC 라는 조합이 가능할거고 누군가는 AC를 시키면 A, AC라는 조합이 가능하겟네요 이때 AB == BA이기 때문에 (라면과 밥, 밥과 라면은 같은 조합이죠) 한번만 체크하기위해서 문자열을 정렬해주고 모든 조합을 검사하면 A: 2 AB: 1 AC: 2 BC: ..

[Swift Algorithm] 49191 순위 프로그래머스

programmers.co.kr/learn/courses/30/lessons/49191 코딩테스트 연습 - 순위 5 [[4, 3], [4, 2], [3, 2], [1, 2], [2, 5]] 2 programmers.co.kr 어떻게 구현해야할까 감이안오는 문제였어요.. 처음에는 자신의 순위를 확실히하려면 n-1개의 정보가 필요함 을 이용해서 풀어보려고했어요 Set을 이용해서 이긴사람과 진사람을 체크한후 i를 이긴 사람은 i가 이긴사람을 다이김 i한테 진 사람은 i가 진사람한테 다짐 위의 로직을 적용해봤지만 일부 케이스만 통과하고 생각해보니 이긴사람, 진사람이 갱신되면 다시 업데이트 되야하는 그 과정이 누락된것같더라구요 이 논리로 푸려고했지만 계속실패해서 다른 방법을 찾아봤고 이방법이 정석인것 같았어요 플..

[Swift Algorithm] 프로그래머스 43238 입국심사

programmers.co.kr/learn/courses/30/lessons/43238 코딩테스트 연습 - 입국심사 n명이 입국심사를 위해 줄을 서서 기다리고 있습니다. 각 입국심사대에 있는 심사관마다 심사하는데 걸리는 시간은 다릅니다. 처음에 모든 심사대는 비어있습니다. 한 심사대에서는 동시에 한 programmers.co.kr 문제만 봐도 1,000,000,000... 10억이죠? O(n)을 사용해도 버거운 속도일거 같네요 시간복잡도를 줄이는 쪽으로 접근해야할텐데 문제만보고 접근방법이 떠오르지않았는데 이문제의 카테고리가 이분탐색 이에요 ㅎㅎ 그래서 어떻게 이진탐색을 이용할까... 생각했지만 어렵더라구요 너무오래생각하게되면 풀이를 보고 배우는게 더좋다고했어요... ㅠㅠ 분을 기준으로 몇명을 검사할 수 ..

[Swift Algorithm] 프로그래머스 42861 섬 연결하기

programmers.co.kr/learn/courses/30/lessons/42861 코딩테스트 연습 - 섬 연결하기 4 [[0,1,1],[0,2,2],[1,2,5],[1,3,1],[2,3,8]] 4 programmers.co.kr 문제를 간단하게 요약하면 각 노드를 모두 연결 할 수 있는 간선의 최소 가중치를 구해라 라는 문제에요 방문하는 문제와 결이 달라요 되게 어려운 문제지만 크루스칼 알고리즘과 Union Find 알고리즘 개념을 알고나면 접근하기 쉬워지는 문제에요 Union Find 란 여러개의 노드가 존재 할 때 연결된 노드들을 같은 집합 구성원으로 묶어주는 알고리즘이에요 [1,2], [2,3], [3,4], [5,6] 이런 집합이 있다면 위와 같이 그려 볼 수 있겠죠? 2번과 4번이 같은 집..

[Swift Algorithm] 프로그래머스 49189 가장 먼 노드

programmers.co.kr/learn/courses/30/lessons/49189 코딩테스트 연습 - 가장 먼 노드 6 [[3, 6], [4, 3], [3, 2], [1, 3], [1, 2], [2, 4], [5, 2]] 3 programmers.co.kr 간단하게는 1번에서부터 먼 거리에있는 노드를 찾는 문제에요 뭔가 bfs를 사용해야할거같죠..? 막상 하려니 감이안오네요 ㅎㅎ bfs는 큐를 사용하니까 큐를 이용해서 구현해볼거에요 해결 방법 제가 생각한 원리로는 1번에서 시작하면 인접한 노드는 [2, 3] 가있고 거리가 1이다를 저장할거에요 큐를 두개만들고 하나는 꺼내는용 하나는 결과 저장용이에요 (2, 1), (3, 1) 이 두개를 두개의 큐에 저장해두고 꺼내는용큐:(2, 1), (3, 1) 저..