반응형

공부 261

[Java] 백준알고리즘 #3053 택시 기하학

택시 기하학에서 두 점 사이의 거리가 위 조건과 같을 때, 주어진 반지름을 가진 원의 넓이를 구하는 문제이다. 언뜻 보면 복잡해 보이는 문제이지만 간단하다. 원의 정의가 유클리드 기하학과 같기 때문에 먼저 택시 기하학에서 두 점 사이의 거리가 같은 점들을 구해본다. 예를 들어 반지름이 1일 경우 유클리드 기하학에서 원은 다음과 같이 표현할 수 있다. 하지만 택시 기하학에서는 두 점사이의 거리가 |x1 - y1| + |x2 - y2| 이므로 이 거리가 1이 되는 순서쌍에는 (1, 0) (0.5, 0.5) (0, 1) (-0.5, 0.5) ... 등이 있다. 이를 그림으로 나타내보면 다음과 같다. 즉 택시 기하학에서 반지름이 r인 원 (한 점으로부터 거리가 같은 점들의 집합) 의 넓이는 대각선이 2*r 인 ..

[Java] 백준알고리즘 #4153 직각삼각형

피타고라스의 정리를 이용하여 직각삼각형인지 아닌지를 판별하는 문제. 매우 간단하다. a, b, c 값을 입력 받은 후 𝑎² = 𝘣² + 𝘤² 를 만족하는지만 확인하면 된다. 먼저 a, b, c 값이 0이라면 반복문이 종료되므로 break문을 이용해 0을 입력받으면 빠져나갈 수 있게 해 둔다. if (a == 0 && b == 0 && c == 0) break; 그 후 a, b, c 중 어떤 값이 대각선인지 모르기 때문에 if문을 활용하여 3가지의 경우로 나눈다 a가 대각선이라면 𝑎² = 𝘣² + 𝘤² b가 대각선이라면 𝘣² = 𝑎² + 𝘤² c가 대각선이라면 𝘤² = 𝑎² + 𝘣² 가 되겠다. 이를 코드로 작성해보면 다음과 같다. import java.util.Scanner; public class Ba..

[Java] 백준알고리즘 #3009 네 번째 점

세 점을 입력받고 축에 평행한 직사각형을 만들기 위해 마지막 한 점을 구하는 문제이다. 먼저 각 점들의 x, y 좌표를 나누어 입력받는다. int ax, ay, bx, by, cx, cy; ax = sc.nextInt(); ay = sc.nextInt(); bx = sc.nextInt(); by = sc.nextInt(); cx = sc.nextInt(); cy = sc.nextInt(); 축에 평행한 직사각형을 만들기 때문에 위 세 점은 각각 x좌표나 y좌표가 하나씩은 일치하는 부분이 있다. 따라서 네 점을 구했을 때 같은 x좌표가 같은것이 2개, y좌표가 같은것이 2개씩 있어야 한다. 이를 이용해 if문을 사용하여 코드를 작성해보면 다음과 같다. import java.util.Scanner; publ..

[Java] 백준알고리즘 #2775 부녀회장이 될테야

위와 같은 조건을 가진 아파트에 a층 b호에 사는 사람의 수는 몇명인지 구하는 문제이다. a층의 b호에는 a-1층의 1호부터 b호까지 거주하는 사람들의 수의 합 만큼의 사람이 살고 있다. 이를 숫자로 나열해보면 0층 : 1 2 3 4 5 ... 1층 : 1 3 6 10 15 ... 2층 : 1 4 10 20 35 ... 3층 : 1 5 15 35 70 ... 4층 : 1 6 21 56 126 ... ... 이 될 것이다. 먼저 k와 n을 입력받고 이 범위만큼의 2차원 배열을 생성한다. int k, n; k = sc.nextInt(); n = sc.nextInt(); int[][] a = new int[k + 1][n + 1]; 배열은 0부터 시작하고, 이 아파트에는 0층이 있으므로 k+1, n+1 만큼의..

[Java] 백준알고리즘 #11653 소인수분해

입력받은 수에 대해서 소인수분해를 하여 각 소인수들을 출력하는 문제이다. 소인수분해는 위와 같이 소수를 이용하여 가장 작은 소수부터 본래의 수를 나누어 더이상 나누어 떨어지지 않는 수(소수)가 나올 때 까지 나누면 된다. 위의 경우 80을 차례대로 나눈 결과가 2,2,2,2,5가 나오므로 이것이 소인수분해 결과가 된다. 위 그림을 참고하여 이 문제를 해결해보자. 먼저 본래의 수를 n, 나누는 수를 i라고 하자. i는 소수중 가장 작은숫자인 2부터 시작한다. int n; int i = 2; 이 i는 차례로 커져가면서 n을 나누는데 나누어 떨어진다면 그 i는 소인수가 될 것이고 아니라면 i값을 1씩 증가시킨다. if문을 사용해 나누어 떨어진다면 n에서 i를 나누고, i를 출력한 후 i를 2로 초기화해준다. ..

[DataBase] Oracle SQL - DML (데이터 조작어) SELECT / INSERT / UPDATE / DELETE

SQL에서 가장 많이 쓰이는 DML에 대해 알아보자. DML (Data manipulation language) - 데이터 조작어 - 데이터를 조작하는데 사용되는 언어 - SELECT : 선택 - INSERT : 삽입 - UPDATE : 수정 - DELETE : 삭제 1.SELECT SELECT문은 앞에서 다루었기 때문에 이전 포스팅을 참고하기 바란다. 또한 사용되는 여러 함수들도 이전 포스팅을 참고하면 되겠다. 2021/02/02 - [Database/개념정리] - [DataBase] Oracle SQL 기본 문법 - 1 (SELECT, FROM) [DataBase] Oracle SQL 기본 문법 - 1 (SELECT, FROM) 위의 예시 테이블을 이용하여 기본 문법을 알아보도록 하자. 1. SELE..

[DataBase] Oracle SQL - DDL (데이터 정의어) CREATE / ALTER / DROP / RENAME / TRUNCATE

데이터 정의어 (DDL: Data Definition Language) - 데이터베이스는 데이터 관리 및 보관을 위해 다양한 객체를 제공한다. 이러한 객체를 새로 만들거나 기존에 존재하던 객체를 변경하거나 삭제하는 등의 기능을 수행하는 명령어를 데이터 정의어라고 한다. DDL 의 종류 - CREATE : 객체를 생성 - ALTER : 이미 생성된 객체를 변경 - DROP : 객체를 삭제 - RENAME : 이름 변경 - TRUNCATE : 데이터 삭제 1. CREATE - CREATE [계정].[테이블] ([열이름] [자료형] [제약조건] , [열2이름] [자료형2] [제약조건2], ... ); - 소유계정이름을 생략하고 CREATE TABLE 명령어를 사용하면 현재 접속해 있는 계정 소유의 테이블이 만..

[DataBase] Oracle SQL - 조인 정리(등가 조인 / 비등가 조인 / 외부 조인(LEFT/RIGHT/FULL JOIN) / 셀프 조인)

집합 연산자와 조인의 차이점 - 조인은 두 개 이상의 테이블을 연결하여 하나의 테이블 처럼 출력할 때 사용하는 방식이다. - 집합연산자를 사용한 결과는 두 개 이상 SELECT 문의 결과 값을 세로로 연결한 것이고, 조인을 사용한 결과는 두 개 이상의 테이블 데이터를 가로로 연결 한 것이라고 볼 수 있다. FROM 절에는 여러 테이블을 명시할 수 있다. select * from emp, dept order by empno; 단순히 FROM절에 테이블을 두 개 입력했을 때는 위와 같이 무수히 많은 데이터들이 출력된다. 이는 FROM절에 함께 명시한 각 테이블을 구성하는 행이 모든 경우의 수로 조합되어 출력되기 때문이다 때문에 조건식을 지정해 주어야 하는데 이 때에는 보통 외래키를 이용하여 조건식을 설정해준..

반응형