본문 바로가기

Algorithm

(13)
[Programmers/Level 2/Java] 조이스틱 Programmers(프로그래머스) 조이스틱 코딩테스트 연습 - 조이스틱 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. ▲ - 다 programmers.co.kr 문제 설명 조이스틱으로 알파벳 이름을 완성하라. 처음에는 모두 A로만 이루어져 있으며, 상하로 알파벳을 선택하고, 좌우로 커서를 옮길 수 있다. 첫번째 위치에서 조이스틱을 왼쪽으로 조작하면 마지막 위치로 커서를 이동하고, "A"에서 조이스틱을 위쪽으로 조작하면 "Z"로 입력된다. 예) "JAZ"라는 이름을 만들기 위해, "AAA"에서 조이스틱을 다음과 같이 움직여야 한다. - 첫번째 알파벳 "J"를..
[Programmers/Level 2/Java] 124 나라의 숫자 Programmers(프로그래머스) 124 나라의 숫자 코딩테스트 연습 - 124 나라의 숫자 124 나라가 있습니다. 124 나라에서는 10진법이 아닌 다음과 같은 자신들만의 규칙으로 수를 표현합니다. 124 나라에는 자연수만 존재합니다. 124 나라에는 모든 수를 표현할 때 1, 2, 4만 사용합니다. programmers.co.kr 문제 설명 124 나라에서는 다음과 같은 규칙으로 수를 표현한다. 1. 124 나라에는 자연수만 존재 2. 124 나라에는 모든 수를 표현할 때 1, 2, 4만 사용 즉, 다음과 같이 변환된 숫자를 사용한다. 1(10) ---> 1(124) 2(10) ---> 2(124) 3(10) ---> 4(124) 4(10) ---> 11(124) 5(10) ---> 12(124)..
[Programmers/Level 3/Java] 종이접기 Programmers(프로그래머스) 종이접기 코딩테스트 연습 - 종이접기 직사각형 종이를 n번 접으려고 합니다. 이때, 항상 오른쪽 절반을 왼쪽으로 접어 나갑니다. 다음은 n = 2인 경우의 예시입니다. 먼저 오른쪽 절반을 왼쪽으로 접습니다. 다시 오른쪽 절반을 왼쪽�� programmers.co.kr 문제 설명 직사각형 종이를 n번 접으려고 한다. 이 때, 항상 오른쪽 절반을 왼쪽으로 접는다. 종이를 모두 접은 후 전부 펼쳤을 때, ∨ 모양이 생긴 부분을 0으로, ∧ 모양이 생긴 부분은 1로 표시하여 접힌 부분의 모양 배열을 return 하라. 예) n = 1 -> result = [0] n = 2 -> result = [0, 0, 1] n = 3 -> result = [0, 0, 1, 0, 0, 1,..
[Programmers/Level 2/Java] 짝지어 제거하기 Programmers(프로그래머스) 짝지어 제거하기 코딩테스트 연습 - 짝지어 제거하기 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙 programmers.co.kr 문제 설명 알파벳 소문자로 이루어진 문자열 s가 주어질 때, 같은 문자가 2개 붙어있는 짝을 찾아 제거한다. 짝을 제거한 나머지 문자열을 다시 이어 붙여 문자열을 모두 제거할 때까지 반복한다. 짝지어 제거하기를 성공적으로 수행할 수 있다면 1을, 아닐 경우 0을 리턴한다. 예) baabaa -> bbaa -> aa -> 짝지어 제거하기로 모두 제거할 수 있으므로 1을 리턴한다. 풀이 정확성 뿐만 아..
[Programmers/Level 2/Java] 최솟값 만들기 Programmers(프로그래머스) 최솟값 만들기 코딩테스트 연습 - 최솟값 만들기 길이가 같은 배열 A, B 두개가 있습니다. 각 배열은 자연수로 이루어져 있습니다. 배열 A, B에서 각각 한 개의 숫자를 뽑아 두 수를 곱합니다. 이러한 과정을 배열의 길이만큼 반복하며, 두 수를 곱 programmers.co.kr 문제 설명 길이가 같은 자연수 배열 A, B가 주어졌을 때, 배열 A와 B에서 각각 한 개의 숫자를 뽑아 두 수를 곱한다. 이러한 과정을 배열의 길이만큼 반복해 누적하여, 최종적으로 최소가 되는 누적 값을 구하라. 예시) A = [1, 4, 2], B = [5, 4, 4] 0 + 5(1*5) + 16(4*4) + 8(2*4) = 29 answer: 29 풀이 한 쪽 배열의 최대값과 다른 쪽 ..