목록알고리즘 (88)
Hayden's Archive
알고리즘 문제 출처 : https://www.acmicpc.net/problem/11654 11654번: 아스키 코드 알파벳 소문자, 대문자, 숫자 0-9중 하나가 주어졌을 때, 주어진 글자의 아스키 코드값을 출력하는 프로그램을 작성하시오. www.acmicpc.net 내가 작성한 코드 String으로 입력을 받고 String 클래스의 charAt() 메소드를 활용하여 문자열의 0번째 값을 char형으로 변환시키고 int형으로 캐스팅하면 아스키코드 값을 구할 수 있다. import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String in..
알고리즘 문제 출처 : https://www.acmicpc.net/problem/1065 1065번: 한수 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 �� www.acmicpc.net 내가 작성한 코드 먼저 한수가 맞는지 아닌지 boolean 값을 리턴해주는 함수를 작성한다. temp를 10으로 나눈 나머지를 순차적으로 배열에 저장하는데 temp는 10으로 나눈 몫으로 계속해서 갱신해주다가 0이 되었을 때 반복문을 끝낸다. 지표가 되는 변수 index를 활용하여 배열 save를 반복문으로 돌리는데 현재 순서 인덱스값에서 다음 순서 인덱스값을 빼며 공차 ..
알고리즘 문제 출처 : https://www.acmicpc.net/problem/4673 4673번: 셀프 넘버 문제 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌� www.acmicpc.net 내가 작성한 코드 public class Main { private static int notSelfNum (int n) { int total = n; int quotient = n; while(quotient > 0) { total += quotient % 10; quotient /= 10; } return total; }..
알고리즘 문제 출처 : https://www.acmicpc.net/problem/1546 따로 최댓값으로 나눈 뒤 100을 곱하고 합하는 것이나 총합을 최댓값으로 나눈 뒤 100을 곱하는 것이나 결과는 같게 나온다. 그런 생각에서 코드를 짰는데 결과가 이상하게 나와서 당황스러웠다. 알고 보니 모두 int형으로만 변수를 선언해서 나눈 결과가 온전히 나오지 안고 몫만 나왔던 것. 필요한 숫자들을 따로 double형으로 선언하였고 입력값도 double형으로 받으니 정답! import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); double max ..
- 알고리즘 문제의 효율성 : 1. 수행 시간 / 2. 사용한 메모리 / 3. 코드의 길이 - 효율성 중에서 수행 시간이 가장 중요하다. 보통 메모리는 넉넉하므로 걱정할 필요가 없다. 시간 안에 풀었다면 메모리 부족을 겪지 않는다. - 보통 배열이 가장 많은 공간을 사용한다. 배열의 크기가 크면 시간 초과를 받는 경우가 많다. - 불필요한 공간 없으면 보통 공간 복잡도(Space Complexity)는 신경 안 써도 된다. - 시간 복잡도(Time Complexity)를 통해 작성한 코드의 시간을 예상할 수 있다. - 99%의 케이스가 0.01초가 걸린다고 해도 1%의 케이스가 100초가 걸린다면 그 경우 시간 복잡도는 100초가 걸리는 셈이다. - 시간 복잡도를 계산할 때 보통 빅오 표기법(Big O ..

별 찍기는 그냥 규칙성 찾기와 반복문이 전부다. 규칙만 찾고 반복문 코드만 짜면 끝. 알고리즘 문제 출처 : 백준 https://www.acmicpc.net/problem/2523 2523번: 별 찍기 - 13 첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다. www.acmicpc.net 내가 작성한 코드 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); for(int i=0; i
알고리즘 문제 출처 : 백준 https://www.acmicpc.net/problem 10951번: A+B - 4 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 내가 작성한 코드 문제를 풀다가 입력이 끝났다는 것을 어떻게 받아야 할지 몰라서 처음에 당황했다. 이런 걸 EOF 처리라고 하는데 자바에서는 어떻게 EOF를 처리하는지 서치해보았고 https://mygumi.tistory.com/236 를 참고하여 코드를 작성했다. 자바에서는 입력값에 대하여 EOF 처리를 할 때 Scanner 참조변수의 hasNextInt() 메소드를 활용할 수 있다. 자바의 EOF 처리를 기억하기 위해 코드를 포스팅한다. import java.util.Scanner; ..

현재 프로그래머스 알고리즘 문제를 따로 풀고 있지만 백준 알고리즘 문제는 처음으로 풀어보았다. 프로그래머스는 기본적인 코드의 폼을 제공하지만 백준은 빈 화면만 제공한다. 그래서 처음에 계속 컴파일 에러 뜨길래 이유를 알 수 없어서 서치해봤더니 클래스 이름을 Main으로 해야 작동한다고 한다.(이건 정올도 마찬가지) 백준의 문제를 처음부터 단계별로 조금 풀었는데 기초적인 문제는 제외하고 기억에 남는 문제 위주로 포스팅하겠다. 알람 시계 알고리즘 문제 출처 : 백준 https://www.acmicpc.net/problem/2884 2884번: 알람 시계 문제 상근이는 매일 아침 알람을 듣고 일어난다. 알람을 듣고 바로 일어나면 다행이겠지만, 항상 조금만 더 자려는 마음 때문에 매일 학교를 지각하고 있다. 상..

알고리즘 문제 출처 : 프로그래머스 https://programmers.co.kr/learn/courses/30/lessons/12924 코딩테스트 연습 - 숫자의 표현 Finn은 요즘 수학공부에 빠져 있습니다. 수학 공부를 하던 Finn은 자연수 n을 연속한 자연수들로 표현 하는 방법이 여러개라는 사실을 알게 되었습니다. 예를들어 15는 다음과 같이 4가지로 표현 할 programmers.co.kr 내가 작성한 코드 i부터 j까지의 합을 1부터 j까지의 합에서 1부터 i-1까지의 합을 빼는 것으로 구할 수 있는 것을 활용해서 코드를 짰다. 예시로 나온 7+8=15라는 점에서 생각해서 j의 최댓값은 n의 절반보다 1이 더 크게, i의 최댓값은 n의 절반만큼으로 정하고 반복문을 돌렸는데 정확도는 곧바로 통..

알고리즘 문제 출처 : 프로그래머스 https://programmers.co.kr/learn/courses/30/lessons/12945 코딩테스트 연습 - 피보나치 수 피보나치 수는 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) = programmers.co.kr 내가 작성한 코드 처음에 이 문제를 접하고 무슨 이렇게 쉬운 문제가 다 있나 만만하게 보다가 큰코를 다칠 뻔했다. 프로그래머스에서 돌렸다가 에러가 떠서 ..