본문 바로가기

공부106

[programmers] 콜라츠 추측 콜라츠 추측 콜라츠 추측 x1937년 Collatz란 사람에 의해 제기된 이 추측은, 입력된 수가 짝수라면 2로 나누고, 홀수라면 3을 곱하고 1을 더한 다음, 결과로 나온 수에 같은 작업을 1이 될 때까지 반복할 경우 모든 수가 1이 된다는 추측입니다. 예를 들어, 입력된 수가 6이라면 6→3→10→5→16→8→4→2→1 이 되어 총 8번 만에 1이 됩니다. collatz 함수를 만들어 입력된 수가 몇 번 만에 1이 되는지 반환해 주세요. 단, 500번을 반복해도 1이 되지 않는다면 –1을 반환해 주세요. 숫자가 1이 될 때까지 짝수이면 2를 나누어주고, 홀수이면 3을 곱한 뒤 1을 더하는 작업을 반복한다. 몇 번만에 1이 되는지 확인하는 것이므로 각 작업 뒤에는 횟수를 카운트해준다.횟수를 카운트한 뒤.. 2018. 5. 22.
[programmers] 나누어 떨어지는 숫자 배열 나누어 떨어지는 숫자 배열 나누어 떨어지는 숫자 배열 ​xdivisible 메소드는 int형 배열 array와 int divisor를 매개변수로 받습니다.array의 각 element 중 divisor로 나누어 떨어지는 값만 포함하는 새로운 배열을 만들어서 반환하도록 divisible에 코드를 작성해 보세요.​예를들어 array가 {5, 9, 7, 10}이고 divisor가 5이면 {5, 10}을 리턴해야 합니다. array에서 divisor로 나누어지는 수가 몇 개인지 알 수 없어서 ArrayList를 이용했다. 반복문을 이용해서 각각의 수가 나누어지는 지를 확인한 뒤, 나누어 떨어지는 값만 리스트에 저장해 배열로 옮겼다. ArrayList클래스는 알아서 배열로 바꾸어주는 toArray()메소드를 지원.. 2018. 5. 22.
[programmers] 행렬의 덧셈 행렬의 덧셈 행렬의 덧셈 x행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬을 입력받는 sumMatrix 함수를 완성하여 행렬 덧셈의 결과를 반환해 주세요.​예를 들어 2x2 행렬인 A = ((1, 2), (2, 3)), B = ((3, 4), (5, 6)) 가 주어지면, 같은 2x2 행렬인 ((4, 6), (7, 9))를 반환하면 됩니다.(어떠한 행렬에도 대응하는 함수를 완성해주세요.) 그냥 같은 행, 같은 열에 있는 숫자끼리 더해주면 된다.이중 for문을 돌려서 간단하게 구했다.나처럼 A값을 대입해서 B를 더해도되고, 새롭게 배열을 생성해서 A+B 값을 더한 값을 대입해주어도 된다. xclass SumMatrix { int[][] sum.. 2018. 5. 21.
[programmers] 문자열 내림차순으로 배치하기 문자열 내림차순으로 배치하기 문자열 내림차순으로 배치하기 xreverseStr 메소드는 String형 변수 str을 매개변수로 입력받습니다.str에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 String을 리턴해주세요.str는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.예를들어 str이 Zbcdefg면 gfedcbZ을 리턴하면 됩니다. 문자를 큰것부터 작은 것까지 내림차순으로 정렬하는 문제이다. 어떻게 보면 복잡해질 수도 있는데, 이게 대문자는 소문자보다 작은것으로 간주한다고 문제에 주어져 있기 때문에 유니코드 순으로 정렬하면 된다. 문자열을 배열로 잘라주고 Arrays클래스의 sort()메소드로 간단하게 정렬해준다.이 때, Arrays.sort(arr)로 정.. 2018. 5. 21.
[programmers] 삼각형출력하기 삼각형출력하기 삼각형출력하기 xprintTriangle 메소드는 양의 정수 num을 매개변수로 입력받습니다.다음을 참고해 *(별)로 높이가 num인 삼각형을 문자열로 리턴하는 printTriangle 메소드를 완성하세요printTriangle이 return하는 String은 개행문자('\n')로 끝나야 합니다.​높이가 3일때​******높이가 5일때​*************** 이건 정올 문제 풀면서 별삼각형 만들기를 했었기 때문에 쉽게 풀었다.그냥 행이 커질때마다 별 출력하고 개행해주면 된다. xxxxxxxxxxpublic class PrintTriangle { public String printTriangle(int num){ String answer = ""; for (int i = 1; i 2018. 5. 21.
[programmers] 가운데 글자 가져오기 가운데 글자 가져오기 가운데 글자 가져오기 xgetMiddle메소드는 하나의 단어를 입력 받습니다. 단어를 입력 받아서 가운데 글자를 반환하도록 getMiddle메소드를 만들어 보세요. 단어의 길이가 짝수일경우 가운데 두글자를 반환하면 됩니다.예를들어 입력받은 단어가 power이라면 w를 반환하면 되고, 입력받은 단어가 test라면 es를 반환하면 됩니다. 단어 길이의 절반인 위치를 구해 짝수면 앞자리 글자를 같이 가져와 반환하고, 홀수는 그자리의 글자를 반환했다. xxxxxxxxxxclass StringExercise {​ String getMiddle(String word) {​ int wl = word.length() / 2;​ if (word.length() % 2 == 0) return "" +.. 2018. 5. 21.
[programmers] 약수의 합 약수의 합 약수의 합 x어떤 수를 입력받아 그 수의 약수를 모두 더한 수 sumDivisor 함수를 완성해 보세요. 예를 들어 12가 입력된다면 12의 약수는 [1, 2, 3, 4, 6, 12]가 되고, 총 합은 28이 되므로 28을 반환해 주면 됩니다. 1부터 약수가 되는 수를 찾아 더해주었다. xxxxxxxxxxclass SumDivisor { public int sumDivisor(int num) { int answer = 0; for (int i = 1; i 2018. 5. 21.
[programmers] 스트링을 숫자로 바꾸기 스트링을 숫자로 바꾸기 스트링을 숫자로 바꾸기 xstrToInt 메소드는 String형 str을 매개변수로 받습니다.str을 숫자로 변환한 결과를 반환하도록 strToInt를 완성하세요.예를들어 str이 1234이면 1234를 반환하고, -1234이면 -1234를 반환하면 됩니다.str은 부호(+,-)와 숫자로만 구성되어 있고, 잘못된 값이 입력되는 경우는 없습니다. 그냥 Integer.parseint()로 간단하게 해결했다. xxxxxxxxxxpublic class StrToInt { public int getStrToInt(String str) { return Integer.parseInt(str); }​ // 아래는 테스트로 출력해 보기 위한 코드입니다. public static void main(.. 2018. 5. 21.
[programmers] 피보나치 수 피보나치 수 피보나치 수 x피보나치 수는 F(0) = 0, F(1) = 1일 때, 2 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 점화식입니다. 2 이상의 n이 입력되었을 때, fibonacci 함수를 제작하여 n번째 피보나치 수를 반환해 주세요. 예를 들어 n = 3이라면 2를 반환해주면 됩니다. 피보나치 수는 0과 1로 시작해서 그 뒤부터는 앞의 두 숫자를 더해주면 되는데, 문제에서 이미 식을 다 내줘버려서 설명할 것도 없는 문제이다.그런데 여기서 만약 위의 문제에 주어진대로 재귀함수를 호출하는 식으로 만들면 num에 큰 숫자를 넣었을 때 런타임이 너무 길어지는 문제가 생길 수 있다.재귀함수라는 게 재밌고 만들기 편하지만 알고리즘 문제를 풀 때는 안좋은 방법인 것 같다. .. 2018. 5. 21.
[programmers] 짝수와 홀수 짝수와 홀수 짝수와 홀수 xevenOrOdd 메소드는 int형 num을 매개변수로 받습니다.num이 짝수일 경우 Even을 반환하고 홀수인 경우 Odd를 반환하도록 evenOrOdd에 코드를 작성해 보세요.num은 0이상의 정수이며, num이 음수인 경우는 없습니다. 간단하게 생각해서 짝수는 2로 나누어떨어지고, 홀수는 나머지 1이 생기는 것을 이용하면 된다. xxxxxxxxxxpublic class EvenOrOdd { String evenOrOdd(int num) { String result = ""; if (num % 2 == 0) result = "Even"; else result = "Odd"; return result; }​ public static void main(String[] args).. 2018. 5. 21.