프로그래머스 PS일지 (9) 썸네일형 리스트형 [Programmers][Swift] 110 옮기기 - Level3 [프로그래머스] 110 옮기기[ 링크 ]간단한 문제 요약0과 1로 이루어진 어떤 문자열 x에 대해서 x에 있는 "110"을 뽑아, 임의의 위치에 삽입합니다."를 반복하여 만들어진 x를 사전 순으로 만들자. (최대한 작은 수로 만들자)문제 풀이110을 전부 추출하고, 나머지 문자열들에 대해서 마지막 원소부터 0이 존재하는지 여부 체크 후 해당 원소 뒤에 붙이거나, 0이 없다면 110 배열을 붙인다면 사전순으로 정렬됨. 110을 추출해서 뒤로 옮기거나 앞으로 옮긴 결과.. 110이 이어져있다는게 특징이었는데 규칙 찾기가 어렵다.. 문제를 풀면서 String.Index를 적극 활용했는데 시간초과가 걸렸다.let solution: ([String]) -> [String] = { $0.map(minimize) }.. [프로그래머스][Swift] 표 편집 - Level3 프로그래머스 표 편집[링크]간단한 문제 요약명령어 기반으로 표의 행을 선택, 삭제, 복구하는 과제를 맡았다. 파란색으로 칠해진 칸이 현재 선택된 행이고, 한 번에 한 행만 선택할 수 있구 표의 범위를 벗어날 수 없다."U X": 현재 선택된 행에서 X칸 위에 있는 행을 선택합니다."D X": 현재 선택된 행에서 X칸 아래에 있는 행을 선택합니다."C" : 현재 선택된 행을 삭제한 후, 바로 아래 행을 선택합니다. 단, 삭제된 행이 가장 마지막 행인 경우 바로 윗 행을 선택합니다."Z" : 가장 최근에 삭제된 행을 원래대로 복구합니다. 단, 현재 선택된 행은 바뀌지 않습니다.문제 풀이어떻게 삭제한 정보를 가져올 수 있을까?, 어떻게 삭제하지 않은 행들만 탐색할 수 있을까?, 답 출력할 때 어떻게 행들의 삭.. [프로그래머스][Swift] 퍼즐 조각 채우기 - Level3 퍼즐 조각 채우기 [문제 링크]간단한 문제 요약 게임 보드안 빈 공간에, table에 있는 퍼즐을 적절히 올려놓아야한다. 특정한 퍼즐을 놓을 때 주변 빈 공간이 없어야한다. 퍼즐 조각은 회전시킬수있지만 뒤집을 수는 없다. 가장 많이 채웠을때 총 몇칸을 채울 수 있는가?문제 접근이 문제를 풀기 위해선 퍼즐을 회전하는 방법을 알아야 합니다.var board = ... // n*n 2차원 배열var temp = Array(repeating: Array(repeating: 0, count: n), count: n)for y in 0.. 이 경우는 n*n일때 2차원배열의 모든 원소들을 90도 회전할 때 사용됩니다. 저는 근데 좌표 회전 방법을 사용했습니다.A(a,b) -> A'(-b,a)이는 한 좌표에 대해서 .. [프로그래머스][Swift] 양과 늑대 - Level3 프로그래머스 양과 늑대 [ 링크 ]간단한 문제 요약초원의 루트 노드에서 시작해, 각 노드를 돌아다니며, 양을 모아야 한다. 노드 방문할 때 마다 해당 노드의 양 또는 늑대는 당신을 따라오고, 이때 당신이 모은 양의 수보다 늑대수가 크거나 같으면 양을 전부 잡아먹는다. 최대한 많은 수의 양을 모아서 루트 노드로 돌아오시오!문제 풀이트리를 탐색할 때 dfs 또는 bfs를 떠올렸습니다. 여기서는 다르게 접근해야할게.. 노드에서 좌, 우 서브트리가 있을 경우 좌 서브트리로 탐색할 때, 우 서브트리도 탐색할 수 있어야 합니다. 0에서 갈 수 있는 child node는 1, 8입니다. 1을 탐색하고, 어떻게 8로도 탐색할 수 있을까요?!핵심 포인트는 재귀로 다음 노드를 탐색할 때, 해당 노드에서 탐색할 수 있는 .. [프로그래머스][Swift] 등대 - Level3 프로그래머스 문제 [ 링크 ] 간단한 문제 요약n개의 등대가 있고, 등대와 등대 사이 오가는 뱃길은 n-1개 존재한다. 어느 등대에서 출발하든, 다른 모든 등대로 이동할 수 있다. 몇개의 등대만을 켜서 전력을 아끼려구 한다. 한 뱃길의 양쪽 끝 등대 중 적어도 하나는 켜져있도록 등대를 켜 두어야 한다.문제 풀이처음엔 그리디하게 문제를 접근했는데 가장 많이 연결된 등대를 키지 않고도 그 주위의 등대들을 켜 두면, 최소한의 켜진 등대 개수가 구해질 수 있었습니다. (x) "한 정점에서 다른 모든 등대로 이동할 수 있다 + n개의 등대 및 뱃길은 n-1개 존재한다." 에서 이 문제는 사이클이 없는 그래프임을 알 수 있습니다. (트리)(n개의 정점 중 간선이 n-1개) dfs와 dp를 통해 특정 정점에서 등대.. [프로그래머스][Swift] 부대복귀 - Level3 문제https://school.programmers.co.kr/learn/courses/30/lessons/132266 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 간단한 문제 요약부대원들 여러 지역을 각각 탐색. 이 지역은 유일한 번로홀 구분됨. 한 지역에서 다른 지역으로 이동시 걸리는 시간은 1로 고정. 각 부대원들의 복귀 지점이 주어질 때 복귀할 수 있는 최단 시간을 구해라. 이때 복귀가 불가능한 인원은 -1, 바로 복귀가 가능한 인원의 최단 시간은 0이다!문제 풀이첫 번째 시도Bfs로 sources별로 destination까지 매번 아래의 bfs탐색.. [프로그래머스/Swift] Level2 - 뒤에 있는 큰 수 찾기 | PS일지 문제https://school.programmers.co.kr/learn/courses/30/lessons/154539 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr[ 간단한 문제 요약 ]정수로 이루어진 배열 numbers 가 있다. 배열의 각 원소들에 대해 자신보다 뒤에 있는 숫자 중 자신보다 크면서 가장 가까이 있는 수를 뒷큰수라고 한다. 뒷 큰수가 존재하지 않을 경우 -1을 담는다. 모든 원소에 대한 뒷 큰수들을 차례로 담아보시오. [ 고려해야 할 사항 ]numbers길이 최악의 경우 1,000,000O(n*n)으로 접근시 1억만번의 연산을 해야합니다... [프로그래머스/Swift] level2 - 스킬트리 | PS일지 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 간단한 문제 요약 스킬을 배우려면 사전에 선행스킬을 먼저 배워야 합니다. 예를들어 스킬트리: 스파크 -> 라이트닝 볼트 -> 썬더. 최종적으로 썬더를 배우기 위해선 그 이전에 스파크를 배운 후에, 라이트닝 볼트를 배워놔야 합니다. 스파크를 배우지 않았다면 라이트닝 볼트를 배울 순 없습니다. 위 스킬트리 중간 중간에 다른 스킬은 순서에 상관없이 많이 배울 수 있습니다. 스파크 -> 힐링1 -> 힐링2 -> 라이트닝 볼트 고려해야 할 사항 예를들어 C -> B -> D라면 "CBD"로 표기합니다. 문제 풀이.. 이전 1 2 다음