프로그래머스 9

[TIL] Swift 에서 Array 를 탐색하는 방법들의 차이 (for in)

[TIL] Swift 에서 Array 를 탐색하는 방법들의 차이 (for in) 프로그래머스에서 코딩테스트 문제를 풀다가 신기한 점을 발견했습니다. Array 를 탐색하는데 인덱스로 탐색하는 것과 for in 을 이용하여 Array 의 원소에 직접 접근하는 것이 꽤나 많은 시간차이를 보인다는 것이었습니다. https://school.programmers.co.kr/learn/courses/30/lessons/64062 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 제가 풀던 문제는 이 문제였는데, 효율성 테스트 부분을 통과하지 못하고 있었습니다. 그런데 ..

iOS 개발/Swift 2022.07.17

[프로그래머스] 셔틀버스 (Swift)

[프로그래머스] 셔틀버스 (Swift) https://programmers.co.kr/learn/courses/30/lessons/17678 코딩테스트 연습 - [1차] 셔틀버스 10 60 45 ["23:59","23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59"] "18:00" programmers.co.kr 풀이 문제 풀이를 위해 고려해야할 점을 정리해보겠습니다. 1. 모든 셔틀버스가 꽉 찼을때 이 경우에는 탈 자리가 없기 때문에 마지막 버스에 마지막으로 탑승한 사람보다 빨리 도착해야 합니다. 1분만 빨리 도착해도 되..

[프로그래머스] 메뉴 리뉴얼 (Swift)

[프로그래머스] 메뉴 리뉴얼 (Swift) https://programmers.co.kr/learn/courses/30/lessons/72411 코딩테스트 연습 - 메뉴 리뉴얼 레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 programmers.co.kr 풀이 Dictionary 의 특성들을 적극 활용해서 해결한 문제였습니다. 주문들을 주어진 길이만큼 조합하여 그 중 가장 빈도수가 많은 메뉴를 골라내는 문제입니다. 주의해야할 점은 메뉴도, 그리고 결과를 담은 배열도 모두 정렬되어있어야 한다는 점입니다. 일단 몇가지 메뉴를 조합해야하는지 숫자가 주어지기 때문에 이를 살펴봤습..

[프로그래머스] 광고 삽입 (Swift)

[프로그래머스] 광고 삽입 (Swift) https://programmers.co.kr/learn/courses/30/lessons/72414 코딩테스트 연습 - 광고 삽입 시간을 나타내는 HH, H1, H2의 범위는 00~99, 분을 나타내는 MM, M1, M2의 범위는 00~59, 초를 나타내는 SS, S1, S2의 범위는 00~59까지 사용됩니다. 잘못된 시각은 입력으로 주어지지 않습니다. (예: 04:60:24, 11 programmers.co.kr 풀이 시청시간이 가장 많이 겹치는 경우를 찾아야 합니다. 그러기 위해서 입력받는 모든 시간을 초로 환산하였습니다. 전체 구간의 크기만큼 배열을 생성하여 시청시간들의 시작과 끝까지 1 씩 증가시켜주었습니다. 이렇게 되면 아무도 시청하지 않은 구간은 0,..

[프로그래머스] 가장 먼 노드 (Swift, Java)

[프로그래머스] 가장 먼 노드 (Swift, Java) https://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 일단 문제를 읽고 1번 노드와 모든 노드간의 거리를 구해야했기 때문에 가장 가까운 노드부터 탐색하는 BFS 를 이용해야겠다고 생각했습니다. 노드의 탐색은 BFS 를 이용하면 비교적 간단하게 구현할 수 있지만, 가장 먼 노드의 개수를 알아야 했기 때문에 노드간의 거리를 계산하는 것이 문제의 핵심이라고 생각했습니다. 2. 거리 계산 거리계산을 위해 각 노드마다 1..

[프로그래머스] 다리를 지나는 트럭 (Swift)

[프로그래머스] 다리를 지나는 트럭 (Swift) https://programmers.co.kr/learn/courses/30/lessons/42583 코딩테스트 연습 - 다리를 지나는 트럭 트럭 여러 대가 강을 가로지르는 일차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 다리에는 트럭이 최대 bridge_length대 올라갈 programmers.co.kr 풀이 1. 다리 현재 다리 위에 어떤 트럭들이 올라가 있는지에 대한 정보를 저장할 수 있는 자료구조가 필요했습니다. 먼저 다리를 건너기 시작한 트럭이 먼저 다리를 다 건너기 때문에 큐를 활용할까 생각했지만, 각 트럭이 다리에 머물러 있는 시간을 세는 방식이 애매하다고 생각하였습니다. 다..

[프로그래머스] 네트워크 (Swift)

[프로그래머스] 네트워크 (Swift) https://programmers.co.kr/learn/courses/30/lessons/43162 코딩테스트 연습 - 네트워크 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있 programmers.co.kr 풀이 이차원 배열로 주어진 그래프 정보에서 총 그래프의 개수를 구하는 문제입니다. 해당 문제를 풀기 위해서는 한 그래프를 모두 탐색한 다음 그 횟수를 구하면 된다고 생각했습니다. DFS 나 BFS 모두 한번 실행할 시 그래프 전체를 탐색하지만 이번에는 DFS 를 활용해봤습니다. 그래프 탐색 여부를 저장하기 위해 먼저 ..

[프로그래머스] 파괴되지 않은 건물 (Swift)

[프로그래머스] 파괴되지 않은 건물 (Swift) https://programmers.co.kr/learn/courses/30/lessons/92344 코딩테스트 연습 - 파괴되지 않은 건물 [[5,5,5,5,5],[5,5,5,5,5],[5,5,5,5,5],[5,5,5,5,5]] [[1,0,0,3,4,4],[1,2,0,2,3,2],[2,1,0,3,1,2],[1,0,1,3,3,1]] 10 [[1,2,3],[4,5,6],[7,8,9]] [[1,1,1,2,2,4],[1,0,0,1,1,2],[2,2,0,2,0,100]] 6 programmers.co.kr 이해 처음 문제를 읽었을때는 생각보다 쉽네? 라는 마음이었습니다. 카카오 문제라서 그렇게 쉽진 않겠지... 라는 생각에 다른 방법을 생각해보려고 노력했지만 완..

[프로그래머스] 다단계 칫솔 판매 (Swift)

[프로그래머스] 다단계 칫솔 판매 (Swift) https://programmers.co.kr/learn/courses/30/lessons/77486 코딩테스트 연습 - 다단계 칫솔 판매 민호는 다단계 조직을 이용하여 칫솔을 판매하고 있습니다. 판매원이 칫솔을 판매하면 그 이익이 피라미드 조직을 타고 조금씩 분배되는 형태의 판매망입니다. 어느정도 판매가 이루어진 후, programmers.co.kr 이해 아래 그림과 같이 생긴 다단계 수익 구조가 있고, 판매원이 칫솔을 하나 판매할때마다 자신은 수익의 90% 를 가져가고 자신의 parent 에게 수익의 10% 를 나눠줍니다. 주어진 배열을 이용해 이를 반복하였을 시 판매원들이 가져가는 수익을 계산하는 문제입니다. 얼마전에 트라이 자료구조 관련한 문제를 풀..