알고리즘

Algorithms/프로그래머스

[프로그래머스] '팩토리얼' - Java

i팩토리얼 (i!)은 1부터 i까지 정수의 곱을 의미합니다. 예를들어 5! = 5 * 4 * 3 * 2 * 1 = 120 입니다. 정수 n이 주어질 때 다음 조건을 만족하는 가장 큰 정수 i를 return 하도록 solution 함수를 완성해주세요. Try 1) int answer = 0; int temp = 1; int max = 0; // 1부터 n까지 올라가는 팩토리얼을 검사 for(int i = 1; i = 1; j--) { // temp 라는 변수에 j를 곱해서 팩토리얼 값을 저장함 temp *= j; // 이 팩토리얼 값이 n보다 커지는 순간 max에 값을 저장하고 break // max에 저장할때는 넘은 시점에서 판단되기때문에 넘기 전 시점을 판단하기 위해서 // i - 1을 해주었음 if(..

Algorithms/프로그래머스

[프로그래머스] '주사위의 개수' - Java

머쓱이는 직육면체 모양의 상자를 하나 가지고 있는데 이 상자에 정육면체 모양의 주사위를 최대한 많이 채우고 싶습니다. 상자의 가로, 세로, 높이가 저장되어있는 배열 box와 주사위 모서리의 길이 정수 n이 매개변수로 주어졌을 때, 상자에 들어갈 수 있는 주사위의 최대 개수를 return 하도록 solution 함수를 완성해주세요. 도형의 넓이를 구하는 문제였는데, 직육면체 상자 안에 정육면체 모양 주사위를 가득 채우는 문제이므로, 각 box의 가로, 세로, 높이를 구해 넓이를 구하는 문제이다. 주사위 모서리의 길이가 주어지므로 box의 인덱스 별로 n으로 나누어 구하는 문제이다. public class numbers_dice { public static int solution(int[] box, int ..

Algorithms/프로그래머스

[프로그래머스] '배열 회전시키기' - Java

정수가 담긴 배열 numbers와 문자열 direction가 매개변수로 주어집니다. 배열 numbers의 원소를 direction방향으로 한 칸씩 회전시킨 배열을 return하도록 solution 함수를 완성해주세요. temp를 통해 값을 간단히 회전시키면 될 것 같았다. Try 1) // IDE에서는 정상 출력이 되었으나, 프로그래머스 플랫폼에서 코드실행을 하면 실행값이 모두 0으로 출력되는 현상 int[] answer = new int[numbers.length]; int length = numbers.length; int last = length - 1; int temp = 0; if(direction == "right") { // 임시저장소에 끝값을 저장 temp = numbers[last]; /..

Algorithms/프로그래머스

[프로그래머스] '공 던지기' - Java

머쓱이는 친구들과 동그랗게 서서 공 던지기 게임을 하고 있습니다. 공은 1번부터 던지며 오른쪽으로 한 명을 건너뛰고 그다음 사람에게만 던질 수 있습니다. 친구들의 번호가 들어있는 정수 배열 numbers와 정수 K가 주어질 때, k번째로 공을 던지는 사람의 번호는 무엇인지 return 하도록 solution 함수를 완성해보세요. [1,2,3,4,5,6] 에 횟수 5번일 경우 1 - 3 - 5 / 1 - 3 해서 3의 인덱스값인 2가 리턴되어야함 Try 1) public static int solution(int[] numbers, int k) { int answer = 0; int cnt = 0; int i = 0 ; int r = 0; while(true) { for(i = r; i < numbers...

Algorithms/프로그래머스

[프로그래머스] '구슬을 나누는 경우의 수' - Java

머쓱이는 구슬을 친구들에게 나누어주려고 합니다. 구슬은 모두 다르게 생겼습니다. 머쓱이가 갖고 있는 구슬의 개수 balls와 친구들에게 나누어 줄 구슬 개수 share이 매개변수로 주어질 때, balls개의 구슬 중 share개의 구슬을 고르는 가능한 모든 경우의 수를 return 하는 solution 함수를 완성해주세요. 경우의 수를 구하는 문제로, 팩토리얼을 구하는 문제이다. Try 1) // 분자의 역할 n! 구하기 int n_fac = 1; for(int i = balls; i >= 1 ; i--){ n_fac *= i; } // (n-m)! 구하기 int nm_fac = 1; for(int i = (balls - share); i >= 1 ; i--){ nm_fac *= i; } // 분모 중 ..

Algorithms/프로그래머스

[프로그래머스] '2차원으로 만들기' - Java

정수 배열 num_list와 정수 n이 매개변수로 주어집니다. num_list를 다음 설명과 같이 2차원 배열로 바꿔 return하도록 solution 함수를 완성해주세요. num_list가 [1, 2, 3, 4, 5, 6, 7, 8] 로 길이가 8이고 n이 2이므로 num_list를 2 * 4 배열로 다음과 같이 변경합니다. 2차원으로 바꿀 때에는 num_list의 원소들을 앞에서부터 n개씩 나눠 2차원 배열로 변경합니다. 1차원배열을 2차원배열로 만드는 문제였다. 대신 n개씩 나누는 매개변수 n이 주어지는데, 이 n은 n * x 배열로 만들어진다는 의미이다. = 한 행당 n개 /* 테스트케이스 answer[0][?] = [1,2] answer[1][?] = [3,4] answer[2][?] = [5,..

Algorithms/프로그래머스

[프로그래머스] '모스부호 (1)' - Java

머쓱이는 친구에게 모스부호를 이용한 편지를 받았습니다. 그냥은 읽을 수 없어 이를 해독하는 프로그램을 만들려고 합니다. 문자열 letter가 매개변수로 주어질 때, letter를 영어 소문자로 바꾼 문자열을 return 하도록 solution 함수를 완성해보세요. 모스부호는 정해진 패턴이 있으므로 그에 해당하는 데이터셋을 만들어야했다. Try 1) // answer에 더해지지 않음, 비효율적 String[] list = letter.split(" "); for(int i = 0; i < list.length; i++) { String cp = list[i]; if(cp == ".-") answer+= "a"; else if(cp == "-...") answer+= "b"; else if(cp == "-...

Algorithms/프로그래머스

[프로그래머스] '순서쌍의 개수' - Java

순서쌍이란 두 개의 숫자를 순서를 정하여 짝지어 나타낸 쌍으로 (a, b)로 표기합니다. 자연수 n이 매개변수로 주어질 때 두 숫자의 곱이 n인 자연수 순서쌍의 개수를 return하도록 solution 함수를 완성해주세요. 특정 숫자가 정해질때 두 숫자의 곱이 그 특정숫자가 되도록 하는 숫자 순서쌍을 찾는 문제이다. Try 1) 시간 초과 및 모든 테스트 통과 실패 /* >> 두번째 반복문에서 조건식을 생략했던 점이 시간초과의 원인인 것 같았다. >> 실제 곱셈 로직을 생각하기보다 어떻게하면 answer값이 증가될 수 있을지 생각해야할 것 같았다. */ // 첫번째 매개변수 (이중 반복문 처리) for(int i = 1; i

Algorithms/프로그래머스

[프로그래머스] '진료 순서 정하기' - Java

외과의사 머쓱이는 응급실에 온 환자의 응급도를 기준으로 진료 순서를 정하려고 합니다. 정수 배열 emergency가 매개변수로 주어질 때 응급도가 높은 순서대로 진료 순서를 정한 배열을 return하도록 solution 함수를 완성해주세요. 처음에는 응급도 배열에서 최소값을 [0]번째 인덱스 값으로 초기화 후 rank를 부여하며 찾고자 하였다. Try 1) // 오답 int min = Integer.MIN_VALUE; min = emergency[0]; // 순위의 최대값 = emergency 배열의 길이 int rank = emergency.length; for(int i = 0; i emergency[i]){ min ..

LEFT
'알고리즘' 태그의 글 목록 (7 Page)