본문 바로가기

Programmers

(65)
[프로그래머스] 조이스틱 [문제] 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. ▲ - 다음 알파벳 ▼ - 이전 알파벳 (A에서 아래쪽으로 이동하면 Z로) ◀ - 커서를 왼쪽으로 이동 (첫 번째 위치에서 왼쪽으로 이동하면 마지막 문자에 커서) ▶ - 커서를 오른쪽으로 이동 예를 들어 아래의 방법으로 JAZ를 만들 수 있습니다. - 첫 번째 위치에서 조이스틱을 위로 9번 조작하여 J를 완성합니다. - 조이스틱을 왼쪽으로 1번 조작하여 커서를 마지막 문자 위치로 이동시킵니다. - 마지막 위치에서 조이스틱을 아래로 1번 조작하여 Z를 완성합니다. 따라서 11번 이동시켜 "JAZ"를 만들 ..
[프로그래머스] 큰 수 만들기 [문제] 어떤 숫자에서 k개의 수를 제거했을 때 얻을 수 있는 가장 큰 숫자를 구하려 합니다. 예를 들어, 숫자 1924에서 수 두 개를 제거하면 [19, 12, 14, 92, 94, 24] 를 만들 수 있습니다. 이 중 가장 큰 숫자는 94 입니다. 문자열 형식으로 숫자 number와 제거할 수의 개수 k가 solution 함수의 매개변수로 주어집니다. number에서 k 개의 수를 제거했을 때 만들 수 있는 수 중 가장 큰 숫자를 문자열 형태로 return 하도록 solution 함수를 완성하세요. 제한 조건 number는 1자리 이상, 1,000,000자리 이하인 숫자입니다. k는 1 이상 number의 자릿수 미만인 자연수입니다. 입출력 예 numberkreturn 1924 2 94 1231234..
[프로그래머스][JAVA] 위장 [문제] https://programmers.co.kr/learn/courses/30/lessons/42578 코딩테스트 연습 - 위장 | 프로그래머스 programmers.co.kr [풀이방법] 의상 이름말고 개수로 생각합니다. 즉, HashMap은 이렇게 정의합니다. 이제 주어진 이차원 문자열 배열을 탐색하면서 해당 의상 종류에 맞는 키가 존재하면 그 키에 대응되는 value의 값을 1만큼 증가하고 존재하지 않으면 해당 키를 생성하고 값으로 1을 넣어줍니다. 이후에는 경우의 수를 구합니다. (경우의 수 공식 = 따로 발생하는 사건의 경우의 수 (m + n) / 동시에 발생하는 사건의 경우의 수 (m * n)) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ..
[프로그래머스][JAVA] 전화번호 목록 [문제] https://programmers.co.kr/learn/courses/30/lessons/42577# 알고리즘 연습 - 전화번호 목록 | 프로그래머스 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조대 : 119 박준영 : 97 674 223 지영석 : 11 9552 4421 전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 solution 함수의 매개변수로 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false를 그렇지 않으면 true를 r programmers.co.kr [풀이방법] 문자열 비교 문제입니다. 알고리즘 분류가 해시로..
[프로그래머스][JAVA] 다리를 건너는 트럭 [문제] https://programmers.co.kr/learn/courses/30/lessons/42583 알고리즘 연습 - 다리를 지나는 트럭 | 프로그래머스 트럭 여러 대가 강을 가로지르는 일 차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 트럭은 1초에 1만큼 움직이며, 다리 길이는 bridge_length이고 다리는 무게 weight까지 견딥니다. ※ 트럭이 다리에 완전히 오르지 않은 경우, 이 트럭의 무게는 고려하지 않습니다. 예를 들어, 길이가 2이고 10kg 무게를 견디는 다리가 있습니다. 무게가 [7, 4, 5, 6]kg인 트럭이 순서 programmers.co.kr [풀이방법] 큐를 두 개 사용하면 간단하게 풀리는 문제입..
[프로그래머스][JAVA] 124 나라의 숫자 [문제] 124 나라가 있습니다. 124 나라에서는 10진법이 아닌 다음과 같은 자신들만의 규칙으로 수를 표현합니다. 124 나라에는 자연수만 존재합니다. 124 나라에는 모든 수를 표현할 때 1, 2, 4만 사용합니다. 예를 들어서 124 나라에서 사용하는 숫자는 다음과 같이 변환됩니다. 자연수 n이 매개변수로 주어질 때, n을 124 나라에서 사용하는 숫자로 바꾼 값을 return 하도록 solution 함수를 완성해 주세요. [풀이방법] 3진법 변환에서 1,2,4 로 숫자를 구성하는 방식으로 풀이한다. level3 풀다가 푸니까 문제 자체가 간단하다. 레벨 간 차이가 조금 큰 것 같다... 주의할 점은 문자열 배열 [1,2,4] 를 역순으로 잡아줘야 한다. [4,2,1] class Solution ..
[프로그래머스][JAVA] 네트워크 [문제] https://programmers.co.kr/learn/courses/30/lessons/43162 알고리즘 연습 - 네트워크 | 프로그래머스 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있을 때 컴퓨터 A와 컴퓨터 C도 간접적으로 연결되어 정보를 교환할 수 있습니다. 따라서 컴퓨터 A, B, C는 모두 같은 네트워크 상에 있다고 할 수 있습니다. 컴퓨터의 개수 n, 연결에 대한 정보가 담긴 2차원 배열 computers가 매개변수로 주어질 때, 네트워크 programmers.co.kr [풀이방법] 프로그래머스에는 DFS 탐색 문제가 많은 것 같다. D..
[프로그래머스][JAVA] N으로 표현 [문제] https://programmers.co.kr/learn/courses/30/lessons/42895 알고리즘 연습 - N으로 표현 | 프로그래머스 programmers.co.kr [풀이방법] 이 문제가 DP로 되어있던데 DP로는 어떻게 푸는 지 모르겠네요.. 저는 DFS로 사칙연산을 하고 그 값과 number를 비교해서 같은 경우에 최소값을 비교해줬습니다. 문제에서 잘 못 본 부분이 최솟값이 8보다 크면 -1을 return 합니다. 여기에서 8보다 클 때 answer를 -1로 만들고 리턴합니다. (저는 여기서 같아질 때 -1로 해서 답이 이상하게 나왔습니다.) 다른 문제와는 다르게 answer의 초기값을 -1로 했습니다. 원래는 최소값이 나올 때 초기값으로 정수의 최대값을 주었는데 그렇게 하니..