반응형

공부 261

[Java] 백준알고리즘 #2675 문자열 반복

반복할 횟수와 문자열을 입력 받은 후 반복할 횟수만큼 각 문자를 반복하여 출력하는 문제이다. 반복할 횟수를 r이라 입력받고 문자열을 s에 입력받는다고 하자. int r = sc.nextInt(); String s = sc.next(); ABC 라는 문자열과 3의 반복횟수를 입력받는다고 하면 먼저 A가 3회 출력되어야 한다. 이는 charAt(0) 의 문자가 3번 출력되는 것이다. 그 다음에는 charAt(1) 의 문자(B) 가 3번, charAt(2) 의 문자(C)가 3번 출력 될 것이다. 이를 위해 이중 for문을 사용해서 작성해보자 for (int j = 0; j < s.length(); j++) { for (int k = 0; k < r; k++) { System.out.print(s.charAt(..

[Java] 백준알고리즘 #10809 알파벳 찾기

입력한 단어의 각 알파벳들이 제일 먼저 나오는 위치를 찾는 문제이다. 먼저 비교를 위해 각 알파벳을 저장할 배열 a와 각 알파벳의 위치를 나타내 줄 b 배열을 만들어보자. char[] a = new char[26]; int[] b = new int[26]; for (int i = 0; i < 26; i++) { a[i] = (char) (97 + i); b[i] = -1; } 알파벳은 총 26자이므로 26만큼의 크기를 가진 배열 a, b 를 생성한다 그 후 배열 a에는 각 알파벳을 넣는다. 이때 소문자 a 는 아스키코드로 97에 해당하므로 97+i 를 char형으로 형변환하여 a[i] 에 담아주면 되겠다. 배열 b는 문제에서 등장하지 않는 알파벳은 -1로 표시하므로 -1로 초기화하였다. 이제 입력받은 문..

[Java] 백준알고리즘 #1436 영화감독 숌

666을 포함하는 수 중 가장 작은 수 부터 순서를 매겨 N번째의 수를 구하는 문제이다. 이를 해결하기 위해서는 i라는 변수를 두고 이 수를 1부터 차례로 증가시키며 이 수가 666을 포함하는지 안하는지를 확인하면 된다. 만약 666을 포함한다면 count를 증가시켜 count 와 n이 같아질 때의 i값이 n번째 영화 제목이 될 것이다. 이를 위해 while문을 이용한다. while(count != n) { if (check(i)) { count++; if (count == n) { System.out.println(i); } } i++; } 여기서 check() 메소드는 이 수가 666을 포함하는지 아닌지를 판별해 주는 함수이다. 이 함수의 반환값이 true일 때 count를 증가시키고, count가 ..

[DataBase] Oracle SQL - DCL (데이터 제어어) GRANT / REVOKE

데이터 제어어(Data Control Language)는 말 그대로 데이터를 제어하기 위한 언어이다. 이 데이터 제어어에는 권한을 관리하기위한 GRANT / REVOKE 등의 언어가 있다. 권한에는 시스템 권한과 객체 권한이 있는데 각 권한별로 권한을 어떻게 부여하고 회수하는지 알아보자. 1. 시스템 권한 -오라클 데이터베이스의 시스템 권한은 사용자 생성과 정보 수정 및 삭제, 데이터베이스 접근, 오라클 데이터베이스의 여러 자원과 객체 생성 및 관리 등의 권한을 포함한다. - 데이터베이스 접속, 사용자 및 오브젝트 생성 등 기본적으로 다음과 같은 권한들이 있다. 시스템 권한 분류 시스템 권한 설명 USER (사용자) 관련 권한 CREATE USER 사용자 생성 권한 ALTER USER 생성된 사용자의 정..

[Java] 백준알고리즘 #2750 수 정렬하기

입력받은 수들을 오름차순으로 정렬하여 출력하는 문제이다. 앞서 여러 문제들을 풀면서 사용했던 선택 정렬을 이용하면 되겠다. 2021.03.15 - [Java/백준알고리즘] - [Java] 백준알고리즘 #2798 블랙잭 [Java] 백준알고리즘 #2798 블랙잭 주어진 수들을 조합하여 3장의 카드를 골라 합이 m에 가장 근접하게 하는 문제이다. 이 문제는 선택정렬을 이용하여 풀면 간단하게 해결할 수 있다. 흔히 최소값, 최대값 또는 오름차순정렬 등을 sehyeok.tistory.com for (int i = 0; i a[j]) { int tmp = a[i]; a[i] = a[j]; a[j] = tmp; }..

[Java] 백준알고리즘 #1018 체스판 다시 칠하기

임의의 n x m 크기의 보드를 8 x 8 의 보드로 잘라내어 체스판을 만들기 위해 색상을 다시 칠하는 문제이다. 조금 단순하지만 무식한 방식으로 풀어보았다. 먼저 비교할 두 체스판 (흰색이 먼저 오는 체스판 과 검은색이 먼저 오는 체스판) 을 만들어둔다. char[][] b = new char[8][8]; char[][] w = new char[8][8]; for (int i = 0; i < 8; i++) { for (int j = 0; j < 8; j++) { if ((i + j) % 2 == 0) { b[i][j] = 'B'; w[i][j] = 'W'; } else { b[i][j] = 'W'; w[i][j] = 'B'; } } } 그리고 n x m 크기의 보드를 이차원 배열에 입력받는다. int ..

[Java] 백준알고리즘 #7568 덩치

각 사람들의 키와 몸무게를 입력받고 등수를 매기는 문제이다. 먼저 각 사람들의 키와 몸무게를 저장할 2차원 배열 a를 만들어 몸무게와 키를 입력받는다. Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[][] a = new int[n][2]; int[] b = new int[n]; for (int i = 0; i < n; i++) { a[i][0] = sc.nextInt(); a[i][1] = sc.nextInt(); b[i] = 1; } a[i][0] 은 몸무게, a[i][1]은 키를 입력받도록 했다. b 배열은 등수를 저장할 배열이므로 1로 초기화 시켜주었다. 위 조건에는 키와 몸무게가 더 많이 나간다면 덩치가 크다고 했다. 이 덩치를 이..

[Java] 백준알고리즘 #2231 분해합

어떤 자연수 n이 있을 때 n과 n의 각 자리수를 더한 것을 분해합이라고 하고, 이 분해합을 A라고 할 때 n은 A의 생성자가 된다고 한다. 임의의 자연수 n, 즉 분해합 n이 주어졌을 때 생성자 m을 구하는 문제이다. 각 자리수를 더하는 방법만 알고 있다면 아주 쉽게 해결 할 수 있는 문제이다. 임의의 정수 i가 있을 때 각 자리수를 더하는 방법은 다음과 같다. while(i > 0){ sum += i % 10; i = i / 10; } 합을 저장할 sum변수에 i를 10으로 나눈 나머지를 넣은 후 다시 i에 i를 10으로 나눈 몫을 저장한다. 만약 789라면 1. 798를 10으로 나눈 나머지인 9가 sum에 저장됨 2. i에 789를 10으로 나눈 몫인 78이 저장됨 3. 78을 10으로 나눈 나머..

[Java] 백준알고리즘 #2798 블랙잭

주어진 수들을 조합하여 3장의 카드를 골라 합이 m에 가장 근접하게 하는 문제이다. 이 문제는 선택정렬을 이용하여 풀면 간단하게 해결할 수 있다. 흔히 최소값, 최대값 또는 오름차순정렬 등을 할 때 많이 사용되는 선택정렬은 1회전에서 1번 원소를 2번 원소부터 시작해 3,4 ... n번째 원소까지 비교하고 2회전에서 2번 원소를 3번 원소부터 시작해 4,5 ... n번째 원소까지 비교하는 방식이다. 이 선택정렬을 이용한다면 1~5까지의 수 중 2개를 뽑아내어 만들 수 있는 순서쌍을 구할 수 있다. 예시를 보자 int[] a = { 1, 2, 3, 4, 5 }; for (int i = 0; i < a.length; i++) { for (int j = i + 1; j < a.length; j++) { Sys..

[Java] 백준알고리즘 #1002 터렛

두개의 좌표 (x1, y1) (x2, y2) 와 이 두 좌표로부터의 거리 r1, r2가 주어질 때 임의의 점 a (a, b) 가 존재할 수 있는 좌표의 수를 출력하는 문제이다. 계산을 편하게 하기 위해 두 점사이의 거리를 저장해두는 변수를 만들어준다. int dis2 = (x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1); 제곱근을 구하려면 Math함수를 사용해야 하므로 피타고라스 공식을 이용하여 거리의 제곱을 저장해두자. 먼저 두 점과 r1, r2 가 일치할 때에는 a가 존재할 수 있는 좌표의 수는 무한대가 된다. if (x1 == x2 && y1 == y2) { if (r1 == r2) { System.out.println(-1); } } 때문에 위와 같이 이 경우의 수..

반응형