본문 바로가기

알고리즘71

[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.
[programmers] 최대공약수와 최소공배수 최대공약수와 최소공배수 최대공약수와 최소공배수 x두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환해주는 gcdlcm 함수를 완성해 보세요. 배열의 맨 앞에 최대공약수, 그 다음 최소공배수를 넣어 반환하면 됩니다.예를 들어 gcdlcm(3,12) 가 입력되면, [3, 12]를 반환해주면 됩니다. 최대공약수는 두 수의 약수 중 가장 큰 값이다. 나처럼 처음부터 돌리지 않고 a부터 내려가면서 찾아서 공약수가 발견되면 바로 break를 써서 빠져나오게 해도 된다.두 수를 곱한 값에서 최대공약수를 나누어주면 최소공배수가 된다. xxxxxxxxxximport java.util.Arrays;​class TryHelloWorld {​ public int[] gcdlcm(int a, int b) { int[] a.. 2018. 5. 21.
[programmers] 수박수박수박수박수박수? 수박수박수박수박수박수 수박수박수박수박수박수? xwater_melon함수는 정수 n을 매개변수로 입력받습니다.길이가 n이고, 수박수박수...와 같은 패턴을 유지하는 문자열을 리턴하도록 함수를 완성하세요.​예를들어 n이 4이면 '수박수박'을 리턴하고 3이라면 '수박수'를 리턴하면 됩니다. 매번 그냥 스트링을 썼는데 이번엔 스트링 버퍼를 한 번 써보았다.참고) String, StringBuffer, StringBuilder 차이점과 장단점 나처럼 배열을 사용하지 않고 그냥 i가 짝수면 "수", 홀수면 "짝"을 더해도 된다.나는 조건문을 사용하지 않고 이렇게 하는 편이 코드가 예뻐보여서 이렇게 했다. xxxxxxxxxxpublic class WaterMelon { public String watermelon(i.. 2018. 5. 21.
[programmers]최대값과 최소값 최대값과 최소값 최대값과 최소값 xgetMinMaxString 메소드는 String형 변수 str을 매개변수로 입력받습니다.str에는 공백으로 구분된 숫자들이 저장되어 있습니다.str에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 (최소값) (최대값)형태의 String을 반환하는 메소드를 완성하세요.예를들어 str이 1 2 3 4라면 1 4를 리턴하고, -1 -2 -3 -4라면 -4 -1을 리턴하면 됩니다. 띄어쓰기로 구분해서 스트링 배열을 만든 후 모든 배열의 값을 스트링인 채로 비교할 수 없으니 Integer클래스의 parseInt()메소드를 이용해 정수값으로 변환했다.변환한 값들의 크기를 비교해서 최소값과 최대값을 구했다. xxxxxxxxxxpublic class GetMinMaxString {​.. 2018. 5. 21.
[programmers] 평균구하기 평균구하기 평균구하기 x함수를 완성해서 매개변수 array의 평균값을 return하도록 만들어 보세요.어떠한 크기의 array가 와도 평균값을 구할 수 있어야 합니다. 배열 합을 구해서 배열 크기를 나누어주면된다. xxxxxxxxxxpublic class GetMean {​ public int getMean(int[] array) { int sum = 0; for (int i = 0; i 2018. 5. 21.
[programmers] 서울에서 김서방찾기 서울에서 김서방찾기 서울에서 김서방찾기 ​xfindKim 함수(메소드)는 String형 배열 seoul을 매개변수로 받습니다.​seoul의 element중 Kim의 위치 x를 찾아, 김서방은 x에 있다는 String을 반환하세요.seoul에 Kim은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니다. 아주 단순한 문제다.그냥 배열에 "Kim"이 들어있는 첨자를 찾아서 출력하면 된다. public class FindKim { public String findKim(String[] seoul){ //x에 김서방의 위치를 저장하세요. int x = 0; for (int i = 0; i 2018. 5. 21.
[JUNGOL] 정보올림피아드&알고리즘 문제 풀이 몇가지 정보 올림피아드 & 알고리즘 정보 올림피아드 & 알고리즘 실력키우기문제답 숫자사각형1 JO1303.java 숫자사각형2 JO1856.java 숫자사각형3 JO1304.java 숫자사각형4 JO2046.java 문자사각형1 JO1307.java 문자사각형2 JO1314.java 달팽이사각형 JO1707.java 문자마름모 JO1331.java 대각선 지그재그 JO1495.java 마방진 JO2074.java 별삼각형1 JO1523.java 별삼각형2 JO1719.java 별삼각형3 JO1329.java 숫자삼각형 JO1641.java 달팽이삼각형 JO1337.java , JO1337_2.java 알고리즘문제답 회의실 배정 JO1370.java 소시지 공장 JO1669.java 2018. 5. 21.
[백준 알고리즘] 4149. 큰 수 소인수분해 큰 수 소인수분해.md 큰 수 소인수분해시간 제한메모리 제한제출정답맞은 사람정답 비율1 초128 MB10501054211.699%문제큰 수를 소인수 분해 해보자.입력입력은 한 줄로 이루어져 있고, 소인수 분해 해야 하는 수가 주어진다. 이 수는 0보다 크고, 262보다 작다.출력입력으로 주어진 양의 정수를 소인수 분해 한 뒤, 모든 인수를 한 줄에 하나씩 증가하는 순서로 출력한다. 예제 입력 1 복사 18991325453139예제 출력 1 복사 xxxxxxxxxx331317927113812423 풀이 나는 소인수를 계산하면서 인수가 나올 때 마다 바로바로 출력을 해주는 식으로 소스를 작성했다.배열을 만들어주어서 배열에 차곡차곡 넣은 후, 배열을 순서대로 출력해 주어도 된다. ​ximport java.ut.. 2018. 4. 19.
[백준 알고리즘] 1463. 1로 만들기 1로 만들기.md 1로 만들기시간 제한메모리 제한제출정답맞은 사람정답 비율2 초128 MB4067213142868232.585%문제정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다.X가 3으로 나누어 떨어지면, 3으로 나눈다.X가 2로 나누어 떨어지면, 2로 나눈다.1을 뺀다.정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최소값을 출력하시오.입력첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 자연수 N이 주어진다.출력첫째 줄에 연산을 하는 횟수의 최소값을 출력한다.예제 입력 1 복사 xxxxxxxxxx2예제 출력 1 복사 xxxxxxxxxx1예제 입력 2 복사 xxxxxxxxxx10예제 출력 2 복사 xxxxxxxxxx3힌.. 2018. 4. 19.