본문 바로가기

알고리즘 문제풀이200

[프로그래머스] 입국심사 (Swift) https://programmers.co.kr/learn/courses/30/lessons/43238?language=swift 코딩테스트 연습 - 입국심사 n명이 입국심사를 위해 줄을 서서 기다리고 있습니다. 각 입국심사대에 있는 심사관마다 심사하는데 걸리는 시간은 다릅니다. 처음에 모든 심사대는 비어있습니다. 한 심사대에서는 동시에 한 programmers.co.kr 이분탐색 접근방법 어떤 것을 이분탐색 해야할지 찾아내는 게 어려운 문제였다. 이분탐색은 수들이 정렬되었다는 가정하에 적용할 수 있는 방법이라는 점을 주의해서 풀이하면 조금이나마 빨리 해결방법을 찾을 수 있지 않을까 싶다. 쨌든 도저히 모르겠어서 검색해서 힌트를 얻었다. 이 문제의 핵심은 심사하는데 걸리는 총시간을 기준으로 이분탐색을 진행.. 2022. 4. 19.
[프로그래머스] 카펫 (Swift) https://programmers.co.kr/learn/courses/30/lessons/42842 코딩테스트 연습 - 카펫 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 programmers.co.kr 완전 탐색 카펫 문양의 규칙은 테두리 한줄은 brown으로 칠하고, 그 안쪽은 모두 yellow로 칠하는 것이다. brown으로 칠해진 칸의 개수와 yellow로 칠해진 칸의 개수가 주어지면 카펫의 가로와 세로 길이를 담아 반환하는 문제 접근방법 처음에는 brown 개수와 yellow 개수를 합한 것이 카펫의 넓이니까 해당 넓이를 만족하는 가로,세로 쌍을 구.. 2022. 4. 15.
[프로그래머스] 가장 큰 수 (Swift) https://programmers.co.kr/learn/courses/30/lessons/42746?language=swift 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr 정렬 정수 배열이 주어지면 이들을 적절히 순서를 변경하고 이어 붙여서 만들 수 있는 수 중에 가장 큰 수를 구하는 문제이다. 접근방법 처음에는 큰자리수의 숫자가 큰 것 순으로 정렬하려고 했는데 글자수길이가 상이할 경우 조건을 만족시키는 로직은 찾기 어려웠다. 찾아보니까 그.. 2022. 4. 13.
[프로그래머스] 여행경로 (Swift) https://programmers.co.kr/learn/courses/30/lessons/43164?language=swift 코딩테스트 연습 - 여행경로 [["ICN", "SFO"], ["ICN", "ATL"], ["SFO", "ATL"], ["ATL", "ICN"], ["ATL","SFO"]] ["ICN", "ATL", "ICN", "SFO", "ATL", "SFO"] programmers.co.kr BFS/DFS 출발지와 도착지를 담은 비행기티켓들이 2차원 배열로 주어지면 모든 티켓을 한번씩 사용하는 여행 경로를 구하는 문제 (단 여러 경로가 있을시 알파벳이 더 빠른 경로가 우선) 접근방법 DFS로 풀지 BFS로 풀지 고민하다가 BFS로 풀었는데 다들 DFS로 풀었네.. 이 문제는 BFS가 시간 .. 2022. 4. 8.
[프로그래머스] 단어 변환 (Swift) https://programmers.co.kr/learn/courses/30/lessons/43163?language=swift 코딩테스트 연습 - 단어 변환 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수 programmers.co.kr BFS (너비 우선 탐색) 두 개의 단어 begin과 target이 주어지면 begin -> target으로 변환하는 최소 과정을 구하는 문제이다. 이때, begin을 target으로 변환하는 과정에서 한번에 한글자씩만 변환할 수 있고, 그렇게 변환할 단어가 words라는 배열에 속해있어야 한.. 2022. 4. 7.
[프로그래머스] 네트워크 (Swift) https://programmers.co.kr/learn/courses/30/lessons/43162 코딩테스트 연습 - 네트워크 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있 programmers.co.kr DFS (깊이 우선 탐색) n개의 컴퓨터들이 서로 연결되어 있는 상태 정보를 2차원 배열로 알려주고 n개의 컴퓨터들이 구성하는 네트워크가 몇개인지 구하는 문제 접근방법 dfs로 풀지 bfs로 풀지 고민하다가 아무래도 dfs로 푸는게 맞는 것 같아서 dfs로 풀었다. 2차원 배열을 모두 보면서 서로 연결된 컴퓨터들을 확인할 것인데 네트워크 하나가 끝나는 지점.. 2022. 4. 6.
[프로그래머스] 가사 검색 (Swift) (스터디) https://programmers.co.kr/learn/courses/30/lessons/60060 코딩테스트 연습 - 가사 검색 programmers.co.kr kakao 2020 블라인드 코딩테스트 가사 검색 가사에 들어있는 단어들을 담은 문자열 배열과 검색하고 싶은 키워드를 담은 문자열 배열이 주어지면 각 키워드에 맞는 단어가 몇개 있는지를 배열에 키워드 순서대로 담아 반환하는 문제 키워드의 형태는 와일드카드('?')를 하나이상 포함하며 이외 문자는 알파벳 소문자로만 이루어진 문자열이 주어진다. 접근방법 정확도와 효율성 테스트가 각각 있는 문제로 시간복잡도를 고려해야한다. 전체 가사 단어 길이의 합이 백만이고, 쿼리의 최대 개수 또한 10만개이기 때문에 쿼리 키워드 하나당 모든 가사 단어들을 검사.. 2022. 3. 28.
[프로그래머스] 자물쇠와 열쇠 (Swift) https://programmers.co.kr/learn/courses/30/lessons/60059 코딩테스트 연습 - 자물쇠와 열쇠 [[0, 0, 0], [1, 0, 0], [0, 1, 1]] [[1, 1, 1], [1, 1, 0], [1, 0, 1]] true programmers.co.kr kakao 2020 블라인드 코딩테스트 key를 90도씩 회전하고 이리저리 옮겨서 lock을 풀 수 있는지 물어보는 문제 접근방법 lock은 고정되어있다고 생각하고 Key를 90도씩 3번 회전시키고 (회전된 키의 경우는 4개) key를 한칸씩 옮겨가면서 Lock에 맞춰보고 풀리는지 확인해야한다. 그림으로 설명하면 이렇게 key를 모두 대보는 것이 접근 방법이었다. 시간초과가 날거라고 생각했는데 최대 크기가 20.. 2022. 3. 24.
[프로그래머스] 괄호 변환 (Swift) https://programmers.co.kr/learn/courses/30/lessons/60058?language=swift 코딩테스트 연습 - 괄호 변환 카카오에 신입 개발자로 입사한 "콘"은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 programmers.co.kr 문제대로 착실히 재귀함수를 구현해도 잘 풀리는 문제.. 그래서 2번인듯 접근방법 이 문제는 정말 접근방법을 문제에서 다 준 경우.. 문제는 문자열 u가 올바른 괄호문자열인지 판단하는 함수를 만들었었는데 다른분 풀이보고 그냥 첫번째 문자만 열린괄호인지 확인하면 된다는 것을 깨닫고.. 차마 이전 코드를 지우지 못해 주석 처리해둔..(이런거 .. 2022. 3. 24.