본문 바로가기

프로그래밍/알고리즘 (JAVA)

(8)
[JAVA] 프로그래머스 LEVEL0 분수의 덧셈 / 최대공약수 활용 | 정답률 33.3% 나오는 경우 필독 진짜 진짜 너무 간단한 문제. 최대공약수 구하는 법만 안다면 문제를 풀 수 있고 최대공약수 구하는 법은 공식이 간단하니 그냥 함수를 통으로 외웠다. public int gcd(int a, int b){ if( a % b == 0) return b; return gcd(b, a % b); } 최대공약수를 재귀와 반복문을 통해 풀 수 있다고 하는데 재귀가 더 간단해서 그냥 재귀로 외워버림 근데 왜 통과 못하고 33.3 퍼만 나올까 ㅠ 해결책은 진짜 간단스 했다... 최대공약수 구하는 부분에서 분모의 최대공약수가 아니라 분자, 분모 통 틀어서 최대 공약수를 구해줘야 함... 약분이 될 수 있다는 경우의 수까지 생각해줘야 했다. 전체 코드 public int[] solution(int numer1, int de..
[JAVA] 프로그래머스 LEVEL2 멀리 뛰기 / 피보나치수열 활용 문제 효진이는 멀리 뛰기를 연습하고 있습니다. 효진이는 한번에 1칸, 또는 2칸을 뛸 수 있습니다. 칸이 총 4개 있을 때, 효진이는 (1칸, 1칸, 1칸, 1칸) (1칸, 2칸, 1칸) (1칸, 1칸, 2칸) (2칸, 1칸, 1칸) (2칸, 2칸) 의 5가지 방법으로 맨 끝 칸에 도달할 수 있습니다. 멀리뛰기에 사용될 칸의 수 n이 주어질 때, 효진이가 끝에 도달하는 방법이 몇 가지인지 알아내, 여기에 1234567를 나눈 나머지를 리턴하는 함수, solution을 완성하세요. 예를 들어 4가 입력된다면, 5를 return하면 됩니다. 풀이과정 n 결과값 1 1 2 2 3 3 4 5 5 8 피보나치 수열과 동일하다.. f(n) = f(n-2) + f(n-3) 풀이식 class Solution { pub..
[JAVA] 프로그래머스 LEVEL2 다음 큰 숫자 / Java BitCount를 활용하여 문제풀이 처음 풀이식 public int solution(int n) { int answer = 0; /* * 조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다. 조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니다. 조건 3. n의 다음 큰 숫자는 조건 1, 2를 만족하는 수 중 가장 작은 수 입니다. */ String n2 = Integer.toBinaryString(n); n2 = n2.replaceAll("0", ""); int cnt = 1; while(true) { answer = n + cnt++; String num2 = Integer.toBinaryString(answer); num2 = num2.replaceAll("0", ""); if(n2.length() =..
[JAVA] 프로그래머스 LEVEL2 피보나치 수 피보나치 수는 F(0) = 0, F(1) = 1일 때, 1 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 수 입니다. 예를들어 F(2) = F(0) + F(1) = 0 + 1 = 1 F(3) = F(1) + F(2) = 1 + 1 = 2 F(4) = F(2) + F(3) = 1 + 2 = 3 F(5) = F(3) + F(4) = 2 + 3 = 5 와 같이 이어집니다. 2 이상의 n이 입력되었을 때, n번째 피보나치 수를 1234567으로 나눈 나머지를 리턴하는 함수, solution을 완성해 주세요. 첫번째 코드 class Solution { public int solution(int n) { int answer = 0; answer += fibo(n); return answe..
[JAVA] 프로그래머스 LEVEL2 숫자의 표현 Finn은 요즘 수학공부에 빠져 있습니다. 수학 공부를 하던 Finn은 자연수 n을 연속한 자연수들로 표현 하는 방법이 여러개라는 사실을 알게 되었습니다. 예를들어 15는 다음과 같이 4가지로 표현 할 수 있습니다. 1 + 2 + 3 + 4 + 5 = 15 4 + 5 + 6 = 15 7 + 8 = 15 15 = 15 자연수 n이 매개변수로 주어질 때, 연속된 자연수들로 n을 표현하는 방법의 수를 return하는 solution를 완성해주세요. class Solution { public int solution(int n) { int answer = 0; int cnt = 1; while(true) { int sum = 0; for(int i=cnt; i n) { break; } } cnt++; if(cnt..
[JAVA] 백준 알고리즘 9012번 - 괄호 (Stack 활용) https://www.acmicpc.net/problem/9012 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net 이렇게 쉬운 문제를 무려 여섯번이나 틀리고 일곱번째에 맞았다. 자만하지 말고 디버깅 제대로 돌렸으면 금방 풀었을 텐데... 멍충멍충 import java.util.Scanner; import java.util.Stack; public class Main { public static void main(String[] args) { Scanner scan = new Sc..
[JAVA] 백준 알고리즘 9093번 - 단어뒤집기 (시간초과) https://www.acmicpc.net/problem/9093 9093번: 단어 뒤집기 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다. 단어와 단어 사이에는 www.acmicpc.net 문제 자체는 그렇게 어렵지않은데 시간초과가 계속 뜨는걸 어찌 해볼수가... 도전은 계속하고 있지만 화가난다 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int num = scan.nextInt(); scan.ne..
[JAVA] 백준 알고리즘 2557번 - Hello World! 백준 알고리즘이 알고리즘 사이트 중에 가장 유명해서 시작해봤다. 어떻게 하는 건지 모르고 그냥 System.out.print 했다가 컴파일에러만 주르륵... 네번 실패하고 인터넷에 검색해서 얻은 결과 Class 이름은 무조건 Main 패키지명도 들어가면 안된다 public class Main { public static void main(String[] args) { System.out.print("Hello World!"); } }