본문 바로가기

알고리즘 문제풀이248

[프로그래머스] 신고 결과 받기 (Swift) https://programmers.co.kr/learn/courses/30/lessons/92334 코딩테스트 연습 - 신고 결과 받기 문제 설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의 programmers.co.kr 카카오 2022 블라인드 코딩테스트 딕셔너리와 배열을 적절히 잘 활용해서 푸는 구현 문제 이름이 담긴 배열, "신고자 피신고자"가 담긴 배열, 자연수 K가 주어진다. K번 이상 신고 당한 이용자는 이용이 정지되며, 이용자를 신고한 이용자에게 모두 메일이 1회 발송된다. 이용자는 무제한으로 신고할 수 있지만, 같은 이용자에 대한 신고는 중복되어도 1회로 취.. 2022. 3. 8.
[프로그래머스] 큰 수 만들기 (Swift) (스터디) 1. 적용 알고리즘과 문제 설명 그리디 문제 정수로 된 문자열이 주어지고, 자연수 k가 주어지면 정수 문자열에서 k개의 문자를 제거하여 얻을 수 있는 수 중 가장 큰 수를 구하는 문제 문자열에서 문자를 제거하는 것이기 때문에 문자열의 순서는 보존되어야 한다. 접근방법 큰 수를 얻는게 목적인 만큼, 앞자리 수가 커야한다. 스택 하나를 두고, k개의 카드(앞으로 문자를 제거하는 걸 카드라고 표현한다)가 남아있는 한 새로 들어갈 수가 현재 스택의 맨 위의 수보다 커야한다.는 로직이면 가장 큰 수를 얻을 수 있다. 2. 코드에 대한 설명 이걸 코드로 설명하면 k가 0보다 클 때까지는, 스택의 맨 위의 수 >= 새로 들어갈 수 를 만족할 때 까지 스택에서 원소를 뺀다. 그리고 뺄 때마다 k를 1감소 시킨다. im.. 2022. 3. 6.
[프로그래머스] 빛의 경로 사이클 (C++) https://programmers.co.kr/learn/courses/30/lessons/86052 코딩테스트 연습 - 빛의 경로 사이클 각 칸마다 S, L, 또는 R가 써져 있는 격자가 있습니다. 당신은 이 격자에서 빛을 쏘고자 합니다. 이 격자의 각 칸에는 다음과 같은 특이한 성질이 있습니다. 빛이 "S"가 써진 칸에 도달한 경우, 직진 programmers.co.kr level 2 구현 (배열) 우선 사이클에 대해서 이해가 잘 안돼서 블로그를 찾아보고 이해했다. (역시 국어문제인가) 사이클은 같은 노드, 같은 방향을 다시 만났을 때 사이클이 이루어진다. 접근방법 모든 노드에서 갈 수 있는 모든 방향으로 경로가 뻗어나간다. 이를 위해 3중 for문을 돌려 각 노드의 각 방향으로 출발하는 (이름만)d.. 2022. 3. 5.
[프로그래머스] 소수찾기 (Swift) https://programmers.co.kr/learn/courses/30/lessons/42839?language=swift 코딩테스트 연습 - 소수 찾기 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 programmers.co.kr level 2 dfs(완전 탐색) 한자리 숫자 여러개로 이루어진 문자열이 주어지고, 종이 조각 하나에 한자리 숫자가 적혀서 흩어져있는 상황이다. 이들을 적절히 조합하여 만들 수 있는 소수의 개수를 반환하는 문제. 즉, 문자열 -> 한자리 숫자들의 배열. 로 만들고 숫자들의 가능한 순열을 구해야 한다. 그렇게 나온 수를 소.. 2022. 3. 5.
[프로그래머스] 멀쩡한 사각형 (Swift) https://programmers.co.kr/learn/courses/30/lessons/62048 코딩테스트 연습 - 멀쩡한 사각형 가로 길이가 Wcm, 세로 길이가 Hcm인 직사각형 종이가 있습니다. 종이에는 가로, 세로 방향과 평행하게 격자 형태로 선이 그어져 있으며, 모든 격자칸은 1cm x 1cm 크기입니다. 이 종이를 격자 선을 programmers.co.kr level 2 구현 (최대공약수 & 수학) 직사각형의 가로,세로 크기가 주어지고, 이 직사각형을 구성하는 넓이가 1(1*1) 사각형 중에 대각선이 지나가는 사각형을 제외한 작은 사각형들의 넓이의 합을 반환하는 문제이다. 접근방법 간단해 보였는데 어려웠다. 우선 대각선이 사각형들의 꼭짓점과 만나는 점을 기준으로 작은 사각형으로 분리해야 .. 2022. 3. 3.
[프로그래머스] 큰 수 만들기 (Swift) https://programmers.co.kr/learn/courses/30/lessons/42883?language=swift 코딩테스트 연습 - 큰 수 만들기 programmers.co.kr level 2 큰 수 만들기 (그리디) 정수로 된 문자열이 주어지고, 자연수 k가 주어지면 정수 문자열에서 k개의 문자를 제거하여 얻을 수 있는 수 중 가장 큰 수를 구하는 문제 문자열에서 문자를 제거하는 것이기 때문에 문자열의 순서는 보존되어야 한다. 접근방법 큰 수를 얻는게 목적인 만큼, 앞자리 수가 커야한다. 스택 하나를 두고, k개의 카드(앞으로 문자를 제거하는 걸 카드라고 표현한다)가 남아있는 한 새로 들어갈 수가 현재 스택의 맨 위의 수보다 커야한다.는 로직이면 가장 큰 수를 얻을 수 있다. 오답노트 .. 2022. 3. 2.
[프로그래머스] 행렬 테두리 회전하기 (Swift) https://programmers.co.kr/learn/courses/30/lessons/77485 코딩테스트 연습 - 행렬 테두리 회전하기 6 6 [[2,2,5,4],[3,3,6,6],[5,1,6,3]] [8, 10, 25] 3 3 [[1,1,2,2],[1,2,2,3],[2,1,3,2],[2,2,3,3]] [1, 1, 5, 3] programmers.co.kr level2 구현 rows*columns 인 격자판이 있고, 순서대로 1부터 숫자가 채워져 있다. 사각형을 이루는 대각선의 점이 주어지고, 그 사각형의 테두리를 시계방향으로 한칸 회전한다. 여러개의 대각선 점이 주어지고, 각 테두리를 회전시키면서 만난 가장 최솟값을 반환하는 문제 접근방법 판이 커질 것 같아서 다른 방법을 고민해봤는데, 숫자의 .. 2022. 3. 2.
[프로그래머스] 기능개발 (Swift) https://programmers.co.kr/learn/courses/30/lessons/42586 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 programmers.co.kr level2, 스택 진행 상황, 속도가 아래와 같이 주어진다. 이때 속도는 하루에 할 수 있는 작업의 양 [93, 30, 55] [1, 30, 5] 진행 상황 배열에서 앞쪽에 있는 작업부터 배포될 수 있고, 뒤에 있는 작업은 작업이 먼저 완료되어도 그 앞의 작업들이 배포되기 전까지는 배포될 수 없다. 접근방법 1. 각 작업 마다 필요한 작업일수를 구한다... 2022. 3. 2.
[프로그래머스] 조이스틱 (C++) https://programmers.co.kr/learn/courses/30/lessons/42860 코딩테스트 연습 - 조이스틱 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. ▲ - 다 programmers.co.kr level2 알파벳으로 구성된 문자열이 주어지고, A로만 이루어진 동일한 길이의 문자열을 주어진 문자열과 동일하도록 바꾸려면 알파벳을 바꾸는 조이스틱 방향과, 커서를 이동하는 조이스틱 방향을 몇번 조작해야하는지 그 최솟값을 구하는 문제 어려웠다 ^_^ 접근방법 알파벳 변경을 위한 조이스틱 조작 횟수는 A부터 Z방향으로 이동하는 경우와, A에서.. 2022. 3. 2.
728x90