반응형

분류 전체보기 318

좋은 객체 지향 설계의 5원칙 SOLID 정의

객체 지향 언어에는 Java, C++, 파이썬 등이 있다. 이 언어들로 설계를 할 때 지켜줘야 할 소프트웨어 개발 원칙 5개를 SOLID 원칙이라고 부른다. SRP (Single Responsibility Principle) 단일 책임 원칙 OCP (Open Closed Priciple) 개방 폐쇄 원칙 LSP (Listov Substitution Priciple) 리스코프 치환 원칙 ISP (Interface Segregation Principle) 인터페이스 분리 원칙 DIP (Dependency Inversion Principle) 의존 역전 원칙 좋은 설계란 시스템에 변화가 생겼을 때 영향을 받는 범위가 적은 것을 말한다. 즉, SOLID 설계 원칙을 적용한다면 코드를 확장하고 유지 보수 관리하기..

[백준]JAVA - 14503번: 로봇 청소기

https://www.acmicpc.net/problem/14503 14503번: 로봇 청소기 첫째 줄에 방의 크기 $N$과 $M$이 입력된다. $(3 \le N, M \le 50)$ 둘째 줄에 처음에 로봇 청소기가 있는 칸의 좌표 $(r, c)$와 처음에 로봇 청소기가 바라보는 방향 $d$가 입력된다. $d$가 $0$인 경우 북쪽 www.acmicpc.net 풀이 로봇 청소기의 작동 과정을 딱 보고 굳이 3-3번에서 1번으로 돌아가야되나? 싶었다. 한 문장으로 작동 과정을 적어보면 아래와 같다. "현재 위치를 청소 후, 왼쪽으로 돌면서 청소되어 있지 않은 곳을 발견하면 그 방향으로 한 칸 전진하고, 한 바퀴를 다 돈 후에도 청소할 곳이 없다면 후진한다." 후진을 할 경우에 뒤에 벽이 있다면 그대로 종료..

[백준]JAVA - 15684번: 사다리 조작

https://www.acmicpc.net/problem/15684 15684번: 사다리 조작 사다리 게임은 N개의 세로선과 M개의 가로선으로 이루어져 있다. 인접한 세로선 사이에는 가로선을 놓을 수 있는데, 각각의 세로선마다 가로선을 놓을 수 있는 위치의 개수는 H이고, 모든 세로선 www.acmicpc.net 풀이 입력하는 과정에서 가로선 정보를 2차원 배열 map[][]에 3가지 경우로 나눠서 입력해줬다. 0: 해당 칸에는 가로선이 없음 1: 해당 칸에서 오른쪽으로 연결되는 선이 존재함 2: 해당 칸에서 왼쪽으로 연결되는 선이 존재함 해당 문제는 3개 이하의 가로선을 만들어서 i번에서 출발하면 i번으로 도착하게 만드는 문제다. 3개 이하의 가로선을 만들어야하기 때문에 dfs를 돌릴 때 limit 함..

자바스크립트 변수 선언 키워드 var let const 차이

자바스크립트에서의 변수 선언은 var, let, const를 사용한다. java에서는 변수의 유형에 따라 int, String, double 등으로 선언하지만 자바스크립트에서는 위 3가지로 변수 선언이 이루어진다. 그렇다면 var, let, const는 어떤 차이점이 있을까? 변수 선언 및 재할당 가능 여부 1. var [중복 선언 가능, 재할당 가능] var tmp = 'Hello'; console.log(tmp); // Hello var tmp = 'World'; console.log(tmp); // World tmp = 'Hello World'; console.log(tmp); // Hello World 동일한 이름으로 중복 선언을 했는데도 에러가 발생하지 않고, 해당 변수를 다른 값으로 변경할 수..

자바 Comparable과 Comparator 차이점

Comparable과 Comparator 은 인터페이스 (interface) 다. 그렇기 때문에 Comparable 과 Comparator 을 사용하기 위해서는 인터페이스 내에 선언된 메소드를 필수적으로 재정의해야한다. 두 개의 인터페이스는 알고리즘을 풀어보면서 자주 언급했던 부분이다. 실제로 알고리즘과 별개로 꼭 알아두어야하는 인터페이스 중 하나이므로 기억해주는 게 좋다. Comparable 해당 인터페이스에는 compareTo(T o) 메소드 하나가 선언되어있다. 즉, Comparable 인터페이스를 사용하기 위해서는 compareTo(T o) 메소드의 재정의가 필수다. Comparator 해당 인터페이스에는 많은 메소드가 선언되어있다. 하지만 필수로 재정의 해주어야하는 건 compare(T o1, ..

[백준]JAVA - 7568번: 덩치

https://www.acmicpc.net/problem/7568 7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩 www.acmicpc.net 풀이 브루트포스를 이용해서 푸는 문제다. '각 사람의 덩치 등수는 몇 등인가?' 문제에서의 덩치가 큰 기준은 키와 몸무게가 모두 비교하는 대상보다 클 경우다. 키와 몸무게를 담을 수 있는 배열을 생성 후에 2중 for문을 이용해서 본인을 제외한 모두와 비교하여 rank 값을 출력해줬다. 문제에서 rank는 본인보다 덩치가 큰 사람 수 + 1 이기 때문에 rank 변수는 1로 초기화해주..

[백준]JAVA - 2116번: 주사위 쌓기

https://www.acmicpc.net/problem/2116 2116번: 주사위 쌓기 첫줄에는 주사위의 개수가 입력된다. 그 다음 줄부터는 한 줄에 하나씩 주사위의 종류가 1번 주사위부터 주사위 번호 순서대로 입력된다. 주사위의 종류는 각 면에 적혀진 숫자가 그림1에 있는 www.acmicpc.net 풀이 주사위 면은 총 6개, 주사위 개수는 최대 10,000개이므로 완전 탐색으로 진행해도 시간제한에 지장이 없다. 주사위 면을 A, B, C 대신 인덱스로 표현하면 아래와 같다. 위 문제의 조건은 아래층 주사위의 윗면과 위층 주사위의 아랫면의 숫자가 같아야한다. 가장 바닥에 올 수 있는 면은 6개의 면 중에서 한 개이므로 1-6까지 반복문을 돌리면서 찾아주면 된다. 아랫면이 정해지면 주사위 맞은 편인..

오라클 ORA-06533: 첨자가 개수를 넘었습니다.

오라클 프로시저, 함수를 호출할 때 주로 발생하는 에러로 프로시저 혹은 함수 내에서 Array (배열) 변수를 사용할 때, 주어진 크기를 넘어섰을 경우에 발생한다. DECLARE TYPE ARR_A IS TABLE OF VARCHAR2(5); ARR_B ARR_A; BEGIN ARR_B := ARR_A('A', 'B', 'C', 'D', 'E'); // 맨 마지막 요소 2개 삭제 ARR_B.TRIM(2); DBMS_OUTPUT.PUT_LINE(ARR_B(1)); // A DBMS_OUTPUT.PUT_LINE(ARR_B(2)); // B DBMS_OUTPUT.PUT_LINE(ARR_B(3)); // C DBMS_OUTPUT.PUT_LINE(ARR_B(4)); // 삭제된 데이터 (D) EXCEPTION W..

[백준]JAVA - 10800번: 컬러볼

https://www.acmicpc.net/problem/10800 10800번: 컬러볼 첫 줄에는 공의 개수를 나타내는 자연수 N이 주어진다(1 ≤ N ≤ 200,000). 다음 N개의 줄 중 i번째 줄에는 i번째 공의 색을 나타내는 자연수 Ci와 그 크기를 나타내는 자연수 Si가 주어진다(1 ≤ Ci ≤ N www.acmicpc.net 풀이 공의 색깔과 크기를 비교해서 i번째 공으로 잡아먹을 수 있는 공들의 크기 합을 구하는 문제이다. 완전 탐색으로 접근하면 공의 개수가 200,000까지의 크기를 가지므로 시간 초과가 발생할 것이다. 따라서 위 문제는 누적합과 정렬을 이용해서 해결해야한다. 누적합을 사용하기 위해서는 공의 크기가 작은 순으로 정렬을 해주어야한다. public static class B..

알고리즘/정렬 2023.01.30

오라클 cmd에서 사용자 계정 생성 및 권한 부여 방법

안녕하세요. 오늘은 명령 프롬포트 (cmd) 창에서 사용자 계정을 생성하고 권한을 주는 방법에 대해서 알아보겠습니다. 사용자 계정 생성하는 방법 1. 명령 프롬포트 (cmd)에서 sqlplus에 관리자로 접속한다. sqlplus "/as sysdba” 위 명령어로 접속이 되지 않는다면 sqlplus를 입력 후에 user-name에 sys as sysdba 를 입력하고, password는 입력하지 않고 엔터를 입력하면 된다. 2. 계정 생성 CREATE USER [ID] IDENTIFIED BY [PW]; ORA-65096: 공통 사용자 또는 롤 이름이 부적합합니다. 그대로 작성했는데 에러가 발생한다. 정상이다. 에러가 발생하지 않는 분들도 오라클 버전의 문제로 오라클 12c 기준으로 아래 버전은 에러가 ..

반응형