본문 바로가기

알고리즘

[알고리즘 문제] 콜라츠 추측 http://tryhelloworld.co.kr/challenge_codes/13 ( 문제 ) Level2 1937년 Collatz란 사람에 의해 제기된 이 추측은, 입력된 수가 짝수라면 2로 나누고, 홀수라면 3을 곱하고 1을 더한 다음, 결과로 나온 수에 같은 작업을 1이 될 때까지 반복할 경우 모든 수가 1이 된다는 추측입니다. 예를 들어, 입력된 수가 6이라면 6→3→10→5→16→8→4→2→1 이 되어 총 8번 만에 1이 됩니다. collatz 함수를 만들어 입력된 수가 몇 번 만에 1이 되는지 반환해 주세요. 단, 500번을 반복해도 1이 되지 않는다면 –1을 반환해 주세요. ( 구현 - 자바 ) Collatz.java class Collatz { public int collatz(long n..
[알고리즘 문제] 하샤드수 http://tryhelloworld.co.kr/challenge_codes/130 ( 문제 ) Level2 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다.Harshad함수는 양의 정수 n을 매개변수로 입력받습니다. 이 n이 하샤드수인지 아닌지 판단하는 함수를 완성하세요. 예를들어 n이 10, 12, 18이면 True를 리턴 11, 13이면 False를 리턴하면 됩니다. ( 구현 - 자바 ) HarshadNumber.java public class HarshadNumber{public boolean isHarshad(int num){ String tmp= String.valu..
[알고리즘 문제] 2016년 (특정일 요일 구하기) http://tryhelloworld.co.kr/challenge_codes/176 ( 문제 ) Level2 2016년 1월 1일은 금요일입니다. 2016년 A월 B일은 무슨 요일일까요? 두 수 A,B를 입력받아 A월 B일이 무슨 요일인지 출력하는 getDayName 함수를 완성하세요. 요일의 이름은 일요일부터 토요일까지 각각SUN,MON,TUE,WED,THU,FRI,SAT를 출력해주면 됩니다. 예를 들어 A=5, B=24가 입력된다면 5월 24일은 화요일이므로 TUE를 반환하면 됩니다. ( 구현 - 자바 ) TryHelloWorld.java class TryHelloWorld{ public String getDayName(int a, int b) { // 금요일 부터 시작 String[] week = ..
[알고리즘 문제] 행렬의 덧셈 http://tryhelloworld.co.kr/challenge_codes/7 ( 문제 ) Level1 행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬을 입력받는 sumMatrix 함수를 완성하여 행렬 덧셈의 결과를 반환해 주세요.예를 들어 2x2 행렬인 A = ((1, 2), (2, 3)), B = ((3, 4), (5, 6)) 가 주어지면, 같은 2x2 행렬인 ((4, 6), (7, 9))를 반환하면 됩니다.(어떠한 행렬에도 대응하는 함수를 완성해주세요.) ( 구현 - 자바 ) SumMatrix.java class SumMatrix {int[][] sumMatrix(int[][] A, int[][] B) {int[][] answer ..
[알고리즘 문제] 최대공약수와 최소공배수 http://tryhelloworld.co.kr/challenge_codes/10 ( 문제 ) Level1 두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환해주는 gcdlcm 함수를 완성해 보세요. 배열의 맨 앞에 최대공약수, 그 다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 gcdlcm(3,12) 가 입력되면, [3, 12]를 반환해주면 됩니다. ( 구현 - 자바 ) TryHelloWorld.java import java.util.Arrays; class TryHelloWorld { public int[] gcdlcm(int a, int b) { int[] answer = new int[2];int num1 = a; int num2 = b; int m = 1;// 몫 // 큰수를 작은수로 ..

맨 위로