알고리즘

    [자료구조] 자료구조와 Algorithm

    [자료구조] 자료구조와 Algorithm

    알고리즘(Algorithm)의 정의 - 컴퓨터로 문제를 풀기 위한 단계적인 절차 - 9세기 페르시아의 수학자인 무하마드 알콰리즈미(Muhammad al-Kwarizmi)의 이름을 라틴어화한 algorismus에서 따온 말이다. 좋은 알고리즘(Algorithm)의 조건 - 입 력 : 0개 이상의 입력이 존재 - 출 력 : 1개 이상의 출력이 존재 - 명확성 : 각 명령어의 의미가 모호하지 않고 명확 - 유한성 : 한정된 수의 단계 후에는 반드시 종료 - 유효성 : 각 명령어들은 실행 가능한 연상 - 정밀성 : 변하지 않는 명확한 작업 단계 - 유일성 : 각 단계마다 명확한 다음 단계를 가짐 - 타당성 : 구현할 수 있고 실용적이어야 함 알고리즘(Algorithm)의 표현 방법 - 영어나 한국어와 같은 자연..

    [자바] 2016년

    2016년 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를 반환하면 됩니다. class TryHelloWorld { public String getDayName(int a, int b) { int[] month = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; String[] day = {"FRI", "SAT", "SUN", "MON", "TUE..

    [자바] 콜라츠 추측

    콜라츠 추측 1937년 Collatz란 사람에 의해 제기된 이 추측은, 입력된 수가 짝수라면 2로 나누고, 홀수라면 3을 곱하고 1을 더한 다음, 결과로 나온 수에 같은 작업을 1이 될 때까지 반복할 경우 모든 수가 1이 된다는 추측입니다. 예를 들어, 입력된 수가 6이라면 6→3→10→5→16→8→4→2→1 이 되어 총 8번 만에 1이 됩니다. collatz 함수를 만들어 입력된 수가 몇 번 만에 1이 되는지 반환해 주세요. 단, 500번을 반복해도 1이 되지 않는다면 –1을 반환해 주세요. class Collatz { public int collatz(int num) { int answer = 0; for(int i=0; i

    [자바] 하샤드수

    하샤드수 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. Harshad함수는 양의 정수 n을 매개변수로 입력받습니다. 이 n이 하샤드수인지 아닌지 판단하는 함수를 완성하세요. 예를들어 n이 10, 12, 18이면 True를 리턴 11, 13이면 False를 리턴하면 됩니다. public class HarshadNumber{ public boolean isHarshad(int num){ int sum=0; String str = String.valueOf(num); for(int i=0; i

    [자바] N개의 최소공배수

    N개의 최소공배수 두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배수는 n 개의 수들의 배수 중 공통이 되는 가장 작은 숫자가 됩니다. nlcm 함수를 통해 n개의 숫자가 입력되었을 때, 최소공배수를 반환해 주세요. 예를들어 [2,6,8,14] 가 입력된다면 168을 반환해 주면 됩니다. class NLCM { public long nlcm(int[] num) { long answer = 0; long temp=num[0]; for(int i=0; i

    [자바] 멀리 뛰기

    멀리 뛰기 효진이는 멀리 뛰기를 연습하고 있습니다. 효진이는 한번에 1칸, 또는 2칸을 뛸 수 있습니다. 칸이 총 4개 있을 때, 효진이는 (1칸, 1칸, 1칸, 1칸) (1칸, 2칸, 1칸) (1칸, 1칸, 2칸) (2칸, 1칸, 1칸) (2칸, 2칸) 의 5가지 방법으로 맨 끝 칸에 도달할 수 있습니다. 멀리뛰기에 사용될 칸의 수 n이 주어질 때, 끝에 도달하는 방법이 몇 가지인지 출력하는 jumpCase 함수를 완성하세요. 예를 들어 4가 입력된다면, 5를 반환해 주면 됩니다. class JumpCase { public int jumpCase(int num) { int answer = 0; int num1=1, num2=2; if(num>=2) { for(int i=2; i