일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 하드웨어
- 파이썬프로그래밍기초
- 백준
- 스캐너클래스
- FOR문
- error
- Scanner class
- 백준알고리즘
- Scanner
- 스캐너
- 변수
- Spring
- java프로그래밍
- 함수
- 자료구조
- java
- 알고리즘
- IF
- C언어
- for
- MySQL
- IF문
- 기본
- 1차원배열
- 자바
- IFELSE
- 반복문
- 유비쿼터스
- 데이터
- 배열
- Today
- Total
목록알고리즘 (27)
정리하고기록하자
백준(JAVA) - 수 찾기 (1920) 문제 N개의 정수 A[1], A[2], …, A[N]이 주어져 있을 때, 이 안에 X라는 정수가 존재하는지 알아내는 프로그램을 작성하시오. 나의 생각 1. 첫번째 배열 크기 정하기 2. 첫번째 배열 원소 넣기 3. 비교할 배열 크기 정하기 4. 비교할 배열 원소 넣기 5. 비교할 배열에 원소 넣고 그 순번에 맞춰 이진 탐색으로 일치하면 1 / 아니면 0 return 하기 생각은 잘했네 1. 첫번째 배열 크기 정하기 2. 첫번째 배열 원소 넣기 Scanner sc = new Scanner(System.in); int[] arr = new int[sc.nextInt()]; // 처음 입력 된 배열 크기 선언 for(int i = 0 ; i < arr.length; i..
이진 탐색 개념과 원리 정렬된 상태의 입력 데이터에 대한 효과적인 탐색 방법이다. 오름차순으로 정렬되었다고 가정되었을때 탐색 방법 배열의 가운데 원소 A[mid]와 탐색키 x를 비교한다. 탐색키 = 가운데 원소 => 탐색 성공 ( 인덱트 mid 반환 후 종료 ) 탐색키 이진탐색 ( 원래 크기 1/2 인 왼쪽 부분배열 ) 순환 호출 탐색키 > 가운데 원소 => 이진탐색 ( 원래 크기 1/2 인 오른쪽 부분배열 ) 순환 호출 *이진탐색 ( 원래 크기 1/2 인 왼쪽 부분배열 ) / 이진탐색 ( 원래 크기 1/2 인 오른쪽 부분배열 ) 탐색을 반복할 때마다 대상 원소의 개수가 1/2씩 감소 한다. 분할 배열의 가운데 원소를 기준으로 왼쪽과 오른쪽 부분배열로 분할한다. 탐색키와 가운데 원소..
백준 - 알고리즘 정렬 / 영수증 (25304) 문제 문제 준원이는 저번 주에 살면서 처음으로 코스트코를 가 봤다. 정말 멋졌다. 그런데, 몇 개 담지도 않았는데 수상하게 높은 금액이 나오는 것이다! 준원이는 영수증을 보면서 정확하게 계산된 것이 맞는지 확인해보려 한다. 영수증에 적힌, 구매한 각 물건의 가격과 개수 구매한 물건들의 총 금액 을 보고, 구매한 물건의 가격과 개수로 계산한 총 금액이 영수증에 적힌 총 금액과 일치하는지 검사해보자. 예제 입력 한 값을 보면 260000 4 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); ..
백준 - 알고리즘 정렬 수 정렬하기 3 (10989) 문제 문제 N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오. 나의 생각 1. N개의 수가 주어졌기 때문에 입력 받아 배열 크기 만들기 2. 배열 원소 입력 받기 3. sort() 정렬 시키기 4. 출력하기 import java.util.ArrayList; import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] arg){ Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int[] arr = new int[N]; for (int i = 0 ; ..
백준 - 알고리즘 for문 더하기 사이클 (1110) 문제 문제 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, 주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자리 수를 이어 붙이면 새로운 수를 만들 수 있다. 다음 예를 보자. 26부터 시작한다. 2+6 = 8이다. 새로운 수는 68이다. 6+8 = 14이다. 새로운 수는 84이다. 8+4 = 12이다. 새로운 수는 42이다. 4+2 = 6이다. 새로운 수는 26이다. 위의 예는 4번만에 원래 수로 돌아올 수 있다. 따라서 26의 사이클의 길이는 4이다. N이 주어졌을 때, N의..
백준 - 알고리즘 문자열 대소문자 바꾸기 (2744) 문제 문제 : 영어 소문자와 대문자로 이루어진 단어를 입력받은 뒤, 대문자는 소문자로, 소문자는 대문자로 바꾸어 출력하는 프로그램을 작성하시오. 입력 : 첫째 줄에 영어 소문자와 대문자로만 이루어진 단어가 주어진다. 단어의 길이는 최대 100이다. 대 소문자 바꾸기는 인프런 알고리즘 인터넷 강의를 봤는데 백준에서도 비슷한 문제가 있어서 풀게 되었다 WrongAnswer 입력 했을때 대문자는 소문자로 , 소문자는 대문자로 변경 하면 된다. import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in..
백준 - 알고리즘 정렬 수 정렬하기 2 (2751) 문제 문제 : N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오. 1. 정렬을 하기 위해서 sort 를 써야 한다는거 까지 생각했고 배열 선언 후 배열에 원소를 넣어 Arrays.sort()로 정렬 후 출력 해야 겠다고 접근 했다. import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); int[] a = new int[sc.nextInt()]; for(int ..
백준 - 알고리즘 1차원배열 OX퀴즈(8958) 문제 문제 : "OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수는 3이 된다. "OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다. OX퀴즈의 결과가 주어졌을 때, 점수를 구하는 프로그램을 작성하시오. 입력 : 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 길이가 0보다 크고 80보다 작은 문자열이 주어진다. 문자열은 O와 X만으로 이루어져 있다. 일단 O , X 란 문자열을 입력 하기 때문에 문자 배열을 선언 해야 한다..
백준 - 알고리즘 1차원배열 나머지 (3052) 문제 문제 : 두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다. 수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오. 입력 : 첫째 줄부터 열번째 줄 까지 숫자가 한 줄에 하나씩 주어진다. 이 숫자는 1,000보다 작거나 같고, 음이 아닌 정수이다. 출력 : 첫째 줄에, 42로 나누었을 때, 서로 다른 나머지가 몇 개 있는지 출력한다. 문제에서 수 10개를 입력 받은 뒤 라고 했으니 int형 배열을 선언 후 그 반복문을 선언한다 public class Main { publ..
백준 - 알고리즘 1차원배열 숫자의 개수(2577) 문제 문제 : 세 개의 자연수 A, B, C가 주어질 때 A × B × C를 계산한 결과에 0부터 9까지 각각의 숫자가 몇 번씩 쓰였는지를 구하는 프로그램을 작성하시오. 예를 들어 A = 150, B = 266, C = 427 이라면 A × B × C = 150 × 266 × 427 = 17037300 이 되고, 계산한 결과 17037300 에는 0이 3번, 1이 1번, 3이 2번, 7이 2번 쓰였다. 입력 : 첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 크거나 같고, 1,000보다 작은 자연수이다. import java.util.Scanner; public class Main{ public static v..