JAVA/Argorithm Test 32

# Level1 - 크레인 인형 뽑기

[문제] 인형이 담긴 2차원 배열 board와 인형을 집기 위해 크레인을 작동시킨 위치가 담긴 배열 moves가 매개변수로 주어질 때, 집어 올린 인형은 바구니에 쌓이게 되고 인형은 순서대로 쌓이게 됩니다. 이 때, 바구니에 똑같은 인형이 연속해서 담기면 똑같은 인형 두개는 터트려져 사라집니다. 그럼 크레인을 모두 작동시킨 후 터트려져 사라진 인형의 개수를 return 하도록 solution 함수를 완성해주세요. [내 풀이] 인형이 담기는 순서가 항상 보장되고, 인형이 터지는 조건은 크레인이 잡은 인형과 바구니에 가장 마지막에 담긴 인형이 같을 때라는 조건이 핵심이므로 큐가 아닌 스택을 사용하였다. 사실 실무에서 stack을 써본적은 없는데 peek()과 pop()의 차이도 확실히 알게 되었다. publ..

JAVA/Argorithm Test 2020.10.27

자바 알고리즘 #Level1 약수의 합

문제 - 출처 : tryhelloworld.co.kr 어떤 수를 입력받아 그 수의 약수를 모두 더한 수 sumDivisor 함수를 완성해 보세요. 예를 들어 12가 입력된다면 12의 약수는 [1, 2, 3, 4, 6, 12]가 되고, 총 합은 28이 되므로 28을 반환해 주면 됩니다. [내 풀이] 약수의 개념만 안다면 쉬운문제. 더 간단한 코드가 있을텐데 다른 사람 풀이를 보니 나와 별다른 점을 찾지 못했다. 더 찾아 봐야겠다.

JAVA/Argorithm Test 2016.07.12

자바 알고리즘 #Level1 최대공약수와 최소공배수

문제 - 출처 : tryhelloworld.co.kr 두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환해주는 gcdlcm 함수를 완성해 보세요. 배열의 맨 앞에 최대공약수, 그 다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 gcdlcm(3,12) 가 입력되면, [3, 12]를 반환해주면 됩니다. [내 풀이] [다른 사람 풀이] public int[] gcdlcm(int a, int b) { int[] answer = new int[2]; answer[0] = gcd(a,b); answer[1] = (a*b)/answer[0]; return answer; } public static int gcd(int p, int q) { if (q == 0) return p; return gcd(q, p%..

JAVA/Argorithm Test 2016.07.11

자바 알고리즘 #Level1 가운데 글자 가져오기

문제 - 출처 : tryhelloworld.co.kr getMiddle메소드는 하나의 단어를 입력 받습니다. 단어를 입력 받아서 가운데 글자를 반환하도록 getMiddle메소드를 만들어 보세요. 단어의 길이가 짝수일경우 가운데 두글자를 반환하면 됩니다. 예를들어 입력받은 단어가 power이라면 w를 반환하면 되고, 입력받은 단어가 test라면 es를 반환하면 됩니다. [내 풀이] [다른사람 풀이] String res; if (word.length() % 2 == 1) { res = word.substring(word.length()/2,word.length()/2+1); } else { res = word.substring(word.length()/2-1,word.length()/2+1); } retur..

JAVA/Argorithm Test 2016.07.07

자바 알고리즘 #Level1 문자열 내림차순으로 배치하기

문제 - 출처 : tryhelloworld.co.kr reverseStr 메소드는 String형 변수 str을 매개변수로 입력받습니다. str에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 String을 리턴해주세요. str는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다. 예를들어 str이 "Zbcdefg"면 "gfedcbZ"을 리턴하면 됩니다. [내 풀이] String 문자열을 ArrayLIst에 넣고 Collections으로 정렬하였다. (reverseOrder = 내림차순) [다른사람 풀이] char[] sol = str.toCharArray(); Arrays.sort(sol); return new StringBuilder(new String(sol)).re..

JAVA/Argorithm Test 2016.07.07

자바 알고리즘 #Level1 나누어 떨어지는 숫자 배열

문제 - 출처 : tryhelloworld.co.kr divisible 메소드는 int형 배열 array와 int divisor를 매개변수로 받습니다. array의 각 element 중 divisor로 나누어 떨어지는 값만 포함하는 새로운 배열을 만들어서 반환하도록 divisible에 코드를 작성해 보세요. 예를들어 array가 {5, 9, 7, 10}이고 divisor가 5이면 {5, 10}을 리턴해야 합니다. [내 풀이] [다른 사람 풀이에서] for(int n : array) { // array 배열 값을 n에 차례대로 넣는 것. if( n % divisor ==0 ) arrayList.add(n); } for - each 문을 사용하여 훨씬 간결하게 코딩할 수 있었다.

JAVA/Argorithm Test 2016.07.06

자바 알고리즘 #Level1 최대값과 최소값 구하기

문제 - 출처 : tryhelloworld.co.kr [문제] getMinMaxString 메소드는 String형 변수 str을 매개변수로 입력받습니다. str에는 공백으로 구분된 숫자들이 저장되어 있습니다. str에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 "(최소값) (최대값)"형태의 String을 반환하는 메소드를 완성하세요. 예를들어 str이 "1 2 3 4"라면 "1 4"를 리턴하고, "-1 -2 -3 -4"라면 "-4 -1"을 리턴하면 됩니다. [내 풀이] -> 자바실력의 모자람으로 풀지못함. [ 다른 사람의 풀이 참조 ] [ 알게 된 것 ] split() - 괄호안의 내용을 기준으로 String 구문 내용을 분리 시켜준다. Array.sort() - 정렬함수 int[] arrayInt ..

JAVA/Argorithm Test 2016.07.01