joonbread의 등록된 링크

키자드에 등록된 총 1673개의 포스트를 확인하실 수 있습니다.

Naver Blog

JAVA 문제 66 - 뒤집힌 덧셈 BAEKJOON 1357

JAVA 문제 66 - 뒤집힌 덧셈 BAEKJOON 1357 뒤집힌 덧셈 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); System.out.println(Integer.parseInt(new StringBuffer( String.valueOf( Integer.parseInt( new StringBuffer(st.nextToken(

Naver Blog

JAVA 문제 67 - 펫 BAEKJOON 1362

JAVA 문제 67 - 펫 BAEKJOON 1362 펫 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.stream.Stream; class Main { public static void main (String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int idx = 0; while(true){ int[] num = Stream.of(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray(); if(num[0] == 0 && num[1] == 0){ break; } boolean chk = false; while(true){ Strin

Naver Blog

JAVA 문제 68 - 가장 많은 글자 BAEKJOON 1371

JAVA 문제 68 - 가장 많은 글자 BAEKJOON 1371 가장 많은 글자 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; class Main { public static void main (String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str; int cnt[] = new int[26]; while((str = br.readLine()) != null){ for(int i=0; i<str.length(); i++){ if(str.charAt(i) >= 'a' && str.charAt(i) <= 'z'){ cnt[str.charAt(i) - 'a']++; } } } int max = 0; for(

Naver Blog

JAVA 문제 69 - 2진수 8진수 BAEKJOON 1373

JAVA 문제 69 - 2진수 8진수 BAEKJOON 1373 2진수 8진수 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); int n = str.length(); if (n%3 == 1) { System.out.print(str.charAt(0)); } else if (n%3 == 2) { System.out.print((str.charAt(0)-'0')*2 + (str.charAt(1)-'0')); } for (int i=n%3; i<n;

Naver Blog

SQL 문제 28 - 헤비 유저가 소유한 장소 (프로그래머스)

SQL 문제 28 - 헤비 유저가 소유한 장소 (프로그래머스) 헤비 유저가 선택한 장소 풀이 SELECT ID , NAME , HOST_ID FROM PLACES WHERE HOST_ID IN ( SELECT HOST_ID FROM PLACES GROUP BY HOST_ID HAVING COUNT(HOST_ID) > 1 ) ORDER BY ID; * 출처 코딩테스트 연습 - 헤비 유저가 소유한 장소 PLACES 테이블은 공간 임대 서비스에 등록된 공간의 정보를 담은 테이블입니다. PLACES 테이블의 구조는 다음과 같으며 ID , NAME , HOST_ID 는 각각 공간의 아이디, 이름, 공간을 소유한 유저의 아이디를 나타냅니다. ID 는 기본키입니다. NAME TYPE ID INT NAME VARCHAR HOST_ID INT 문제 이 서비스에서는 공간을 둘 이상 등록한 사람을 "헤비 유저"라고 부릅니다. 헤비 유저가 등록한 공간의 정보를 아이디 순으로 조회하는 SQL문을 작성해주세

Naver Blog

SQL 문제 29 - 우유와 요거트가 담긴 장바구니(프로그래머스)

SQL 문제 29 - 우유와 요거트가 담긴 장바구니(프로그래머스) 우유와 요거트가 담긴 장바구니 풀이 SELECT DISTINCT CART_ID FROM CART_PRODUCTS WHERE NAME = 'Milk' AND CART_ID IN ( SELECT CART_ID FROM CART_PRODUCTS WHERE NAME = 'Yogurt' ) ORDER BY CART_ID; * 출처 코딩테스트 연습 - 우유와 요거트가 담긴 장바구니 NAME TYPE ID INT CART_ID INT NAME VARCHAR PRICE INT 데이터 분석 팀에서는 우유(Milk)와 요거트(Yogurt)를 동시에 구입한 장바구니가 있는지 알아보려 합니다. 우유와 요거트를 동시에 구입한 장바구니의 아이디를 조회하는 SQL 문을 작성해주세요. 이때 결과는 장바구니의 아이디 순으로 나와야 합니다. 예시 예를 들어 CART_PRODUCTS 테이블이 다음과 같다면 CART_PRODUCTS 테이블 ID CART

Naver Blog

JAVA 문제 70 - 없는 숫자 더하기 프로그래머스

JAVA 문제 70 - 없는 숫자 더하기 프로그래머스 없는 숫자 더하기 풀이 import java.util.stream.IntStream; import java.util.Arrays; class Solution { public int solution(int[] numbers) { return IntStream.range(0, 10).filter(i -> Arrays.stream(numbers).noneMatch(num -> i == num)).sum(); } } * 출처 코딩테스트 연습 - 없는 숫자 더하기 0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers 가 매개변수로 주어집니다. numbers 에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요. 제한사항 1 ≤ numbers 의 길이 ≤ 9 0 ≤ numbers 의 모든 원소 ≤ 9 numbers 의 모든 원소는 서로 다릅니다. 입출력 예 num

Naver Blog

JAVA 문제 58 - 집 주소 BAEKJOON 1284

JAVA 문제 58 - 집 주소 BAEKJOON 1284 집 주소 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; class Main { public static void main (String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); while(true){ String str = br.readLine(); if(str.equals("0")){ break; } char[] cha = str.toCharArray(); int num = 1; for(int i=0; i<cha.length; i++){ if(cha[i] == '1'){ num += 3; }else{ num += cha[i] == '0' ? 5 : 4; } }

Naver Blog

SQL(MySQL/MariaDB) - EXECUTE Statement

SQL(MySQL/MariaDB) - EXECUTE Statement PREPARE Statement에 이어 EXECUTE Statement를 다룬 글이다. EXECUTE Statement -- EXECUTE문 작성법 EXECUTE 쿼리문 이름 [USING @매개변수명1 [, 매개변수명2] ...] -- prepare문 PREPARE s1 from 'select SQRT(POW(?,2) + POW(?,2)) AS tot'; SET @num1 = 3; SET @num2 = 4; -- EXECUTE문 EXECUTE s1 USING @num1, @num2; -- EXECUTE문 결과 tot 5 - EXECUET문은 prepare 명령문을 실행하는 데 prepare에 매개변수 표시문자가 포함된 경우, USING 변수에 매개변수에 맞춰 값을 설정해줘야 한다. - 만약 매개변수 표시문자가 없다면 'EXECUTE 쿼리문' 으로도 사용 가능하다. - PREPARE문을 작성한 다음, 해당 쿼리문 안

Naver Blog

SQL(MySQL/MariaDB) - DEALLOCATE PREPARE 문

SQL(MySQL/MariaDB) - DEALLOCATE PREPARE 문 이전 prepare / execute statement으로 생성되고 실행된 명령문 할당을 해제하는 방법이다. DEALLOCATE PREPARE -- 작성방법 {DEALLOCATE | DROP} PREPARE {prepare statement명} - PREPARE, EXECUTE 이후 DEALLOCATE PREPARE문을 이용하여 할당 해제를 하기 위해 사용한다. - 현재 세션에서 너무 많이 준비된 명령문이 있을 경우 MAX_PREPARED_STMT_COUNT 시스템 변수에 의해 상한이 발생할 수 있다. * 출처 13.5.3 DEALLOCATE PREPARE Statement { DEALLOCATE | DROP } PREPARE stmt_name To deallocate a prepared statement produced with PREPARE , use a DEALLOCATE PREPARE statement

Naver Blog

JAVA 문제 59 - 팀 이름 정하기 BAEKJOON 1296

팀 이름 정하기 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String name = br.readLine(); int[] arr = new int[4]; int max = -1; String str = "LOVE"; String str2 = ""; int N = Integer.parseInt(br.readLine()); for(int i = 0; i < N; i++) { String team = br.readLine(); for(int j =

Naver Blog

JAVA 문제 60 - TV 크기 BAEKJOON 1297

JAVA 문제 60 - TV 크기 BAEKJOON 1297 TV 보기 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.stream.Stream; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int[] num = Stream.of(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray(); double tv = Math.sqrt(Math.pow(num[0],2) / ( Math.pow(num[1],2) + Math.pow(num[2],2) )); Sys

Naver Blog

JAVA 문제 61 - 두수 비교하기 BAEKJOON 1330

JAVA 문제 61 - 두수 비교하기 BAEKJOON 1330 두수 비교하기 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.stream.Stream; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int[] num = Stream.of(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray(); String str = ""; if(num[0] == num[1]){ str = "=="; }else{ str = num[0] > num[1] ? ">" :

Naver Blog

JAVA 문제 62 - 부재중 전화 BAEKJOON 1333

JAVA 문제 62 - 부재중 전화 BAEKJOON 1333 부재중 전화 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.stream.Stream; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int[] num = Stream.of(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray(); ArrayList<Boolean> s = new ArrayList<>(); int res = 0; for(int

Naver Blog

JAVA 문제 63 - A/B BAEKJOON 1008

JAVA 문제 63 - A/B BAEKJOON 1008 A / B 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; class Main { public static void main (String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); double[] num = Arrays.stream(br.readLine().split(" ")).mapToDouble(Double::parseDouble).toArray(); System.out.print(num[0] / num[1]); } } * 출처 1008번: A/B 1008번 제출 맞힌 사람 숏코딩 재채점 결과 채점 현황 질문 검색 A/

Naver Blog

JAVA 문제 55 - 핸드폰 요금 BAEKJOON 1267

JAVA 문제 55 - 핸드폰 요금 BAEKJOON 1267 핸드폰 요금 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.stream.Stream; class Main { public static void main (String[] args) throws java.lang.Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int cnt = Integer.parseInt(br.readLine()); int[] arr = Stream.of(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray(); int M = 0; int Y = 0; if(cnt == arr.length){

Naver Blog

MyBatis(마이바티스) - MSSQL insert 자동 생성키 리턴 받는 방법

MyBatis(마이바티스) - MSSQL insert 자동 생성키 리턴 받는 방법 - MSSQL에선 자동증가를 지원하는데, mybatis에서 insert시 자동증가한 값을 저장해야 할 경우를 다룬 글이다. <!-- mybatis 내용 --> <insert id="id명" > <selectKey keyProperty="프로퍼티명" > insert into 테이블명(컬럼1, 컬럼2 ...) values(#{컬럼1}, #{컬럼2} ...) select SCORE_IDENTITY() AS 프로퍼티명 </selectKey> </insert> - mybatis에서 MSSQL insert가 동작할 때의 값을 key에 담기 위해 score_identity()를 써야 insert한 key값을 가져올 수 있다. - SCORE_IDENTITY()는 현재 실행한 프로세스 내의 마지막 프로퍼티값을 가져오기 때문에 SCORE_IDENTITY()를 사용했다. - 만약, @@IDENTITY나 IDENT_CURR

Naver Blog

SQL(ORACLE 기준) - join된 테이블 delete

SQL(ORACLE 기준) - join된 테이블 delete - Oracle에서 delete할 때 join 조건에 맞춰서 지우고 싶을 때 사용하는 방식이다. join table delete 방법 -- delete 방법(left join) DELETE FROM 테이블1 WHERE EXISTS ( SELECT 1 FROM 테이블2 left outer join 테이블 3 on 테이블2.컬럼1 = 테이블3.컬럼1 WHERE 테이블1.컬럼1 = 테이블2.컬럼1 ); -- delete 방법(right join) DELETE FROM 테이블1 WHERE EXISTS ( SELECT 1 FROM 테이블2 right outer join 테이블 3 on 테이블2.컬럼1 = 테이블3.컬럼1 WHERE 테이블1.컬럼1 = 테이블2.컬럼1 ); - 조건에 맞춰서 데이터를 검색하기 위해 테이블 1, 2는 동일 테이블이다. - join 조건이 충족됬을 때 1을 출력하는데, 1을 출력한 데이터를 delete

Naver Blog

JAVA 문제 56 - 임시 반장 정하기 BAEKJOON 1268

JAVA 문제 56 - 임시 반장 정하기 BAEKJOON 1268 임시 반장 정하기 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Set; import java.util.HashSet; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int cnt = Integer.parseInt(br.readLine()); int[][] table = new int[cnt][5]; int num = 0; int num2 = 0; for (int i = 0; i < cnt; i++) { String[] str = br.re

Naver Blog

Kotlin - Properties

Kotlin - Properties // 클래스를 이용한 properties 선언 class Address { var name: String = "Holmes, Sherlock" var street: String = "Baker" var city: String = "London" var state: String? = null var zip: String = "123456" } // properties 참조하는 방법 fun copyAddress(address: Address): Address { val result = Address() // there's no 'new' keyword in Kotlin result.name = address.name // accessors are called result.street = address.street // ... return result } - properties(속성)사용할 때 보통 속성이름에 맞춰 값을 설정하는데, 그 방법은 되게 다양

Naver Blog

JAVA 문제 57 - 엄청난 부자2 BAEKJOON 1271

JAVA 문제 57 - 엄청난 부자2 BAEKJOON 1271 엄청난 부자2 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.math.BigInteger; class Main { public static void main (String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String[] arr = br.readLine().split(" "); BigInteger n = new BigInteger(arr[0]); BigInteger m = new BigInteger(arr[1]); System.out.println(n.divide(m)); System.out.println(n.remainder(m));

Naver Blog

Jquery - 팝업 바깥 클릭 시 창 닫기

Jquery - 팝업 바깥 클릭 시 창 닫기 // 1. 클릭 이벤트 $(document).on('click', function(e) { // 2. 팝업 밖 클릭 if($(e.target).closest('#팝업id').length == 0) { // 3. 팝업 밖일 경우 창 닫기 $("#팝업id").hide(); } }) 1. js의 click 함수의 매개변수를 이용한다. 2. 클릭 시 click 매개변수를 사용하여 팝업의 길이를 찾는다. 3. 만약, 팝업 밖을 클릭했을 경우 창 닫기가 실행된다.

Naver Blog

SQL(MySQL/MariaDB) - PREPARE Statement

SQL(MySQL/MariaDB) - PREPARE Statement - prepare를 사용하여 실행할 SQL문에 이름을 붙여서 사용할 수 있다. PREPARE Statement -- 선언 방법 -- stmt_name은 실행할 쿼리내용의 이름이다. PREPARE stmt_name FROM 실행할 쿼리내용; * prepare를 사용할 경우 특징 1.실행할 쿼리 내용엔 SQL문구를 나타내야 한다. 2. 쿼리 내용에 '?'를 사용하여 매개변수를 넣어서 실행할 수 있는데, 이 때 반드시 매개변수를 세팅해줘야 하며, 매개변수 데이터 값이 필요할 때 사용할 수 있다. 3. 세션이 종료될 때 prepare로 선언한 쿼리는 더이상 존재하지 않으며, 자동 재연결인 경우에만 사용 가능하다. * 출처 13.5.1 PREPARE Statement PREPARE stmt_name FROM preparable_stmt The PREPARE statement prepares a SQL statement an

Naver Blog

JAVA 문제 51 - 이진수 덧셈 BAEKJOON 1252

JAVA 문제 51 - 이진수 덧셈 BAEKJOON 1252 이진수 덧셈 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.math.BigInteger; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); BigInteger num = new BigInteger(st.nextToken(),2); BigInteger num2 = new BigInteger(st.ne

Naver Blog

JAVA 문제 52 - 팰린드롬수 BAEKJOON 1259

JAVA 문제 52 - 팰린드롬수 BAEKJOON 1259 팰린드롬수 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); List<String> list = new ArrayList<>(); while(true){ String str = br.readLine(); if(str.equals("0")){ break; } list.add(str); } for(String str : list){ String res

Naver Blog

JAVA 문제 53 - 모음의 개수 BAEKJOON 1264

JAVA 문제 53 - 모음의 개수 BAEKJOON 1264 모음의 개수 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; class Main { public static void main (String[] args) throws java.lang.Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int cnt =0 ; while(true){ cnt = 0; String str = br.readLine().toUpperCase(); if(str.equals("#")){ break; } cnt += str.chars().filter(c -> (c == 'I' || c == 'O' || c == 'A' || c == 'U' || c == 'E') ).count();

Naver Blog

자바 기초 60 - Stream의 filter와 count를 사용한 특정 문자 개수 세기

자바 기초 60 - Stream의 filter와 count를 사용한 특정 문자 개수 세기 - stream의 filter를 이용하여 특정 문자 개수를 확인할 수 있다. stream, filter 사용 -- 사용법 문자열 변수명.chars().filter(c -> (c == '특정문자').count(); - filter와 count를 이용하여 확인할 문자열 변수에서 특정 문자 개수를 셀 수 있다. - 자세한 예시 링크 JAVA 문제 53 - 모음의 개수 BAEKJOON 1004 JAVA 문제 53 - 모음의 개수 BAEKJOON 1004 모음의 개수 풀이 - stream을 이용한 풀이 * 출처 blog.naver.com

Naver Blog

SQL(MySQL/MariaDB) - Insert문 최적화

SQL(MySQL/MariaDB) - Insert문 최적화(Bulk Insert) mysql에서 insert문을 최적화하는 방법을 제시한다. mysql에서의 insert문 절차 연결(3) 서버 쿼리 전송(2) 쿼리 구문 분석(2) 행 크기만큼 insert(행크기 * 1) 인덱스 insert(인덱스 수 * 1) 종료(1) - 위의 숫자는 대략적인 비율을 나타내는데, 동시 실행 쿼리에 대해 한번씩 수행되는 테이블 검색에 대해 초기 오버헤드를 고려하지 않는다. - 그렇기에, INSERT를 최적화하기 위해 다음과 같은 방법을 제시한다. 1. bulk_inser_buffer_size 변수 조정(bulk_insert) /etc/mysql/my.cnf에서 [mysqld] 항목 아래 bulk_insert_buffer_size를 변경 -- mysql에서 바로 적용(재시작 시 초기화) set global bulk_insert_buffer_size = 변경할 값 -- 확인 SHOW VARIABLES L

Naver Blog

SQL(MySQL/MariaDB) - DO 문

SQL(MySQL/MariaDB) - DO 문 DO문은 실행 시 결과를 반환하지 않으며, SELECT보다 조금 더 빠르다는 장점이 있다. 결과 출력과 관계없는 함수나, 트리거에 주로 사용된다. DO 사용법 -- SELECT FUNCTION SELECT FUNCTION명; -- DO FUNCTION DO FUNCTION명; DO문은 'SELECT 컬럼명 FROM 테이블명' 같은 결과를 출력하는데 부적합하다. * 출처 13.2.3 DO Statement DO expr [ , expr ] . . . DO executes the expressions but does not return any results. In most respects, DO is shorthand for SELECT expr , ... , but has the advantage that it is slightly faster when you do not care about the result. DO is useful p

Naver Blog

SQL(ORACLE 기준) - 다른 테이블 데이터 복사한 테이블 생성

SQL(ORACLE 기준) - 다른 테이블 데이터 복사한 테이블 생성 -- 복사하기 CREATE TABLE 복사한 테이블명 AS SELECT * FROM 복사할 테이블명; 테이블 내용 그대로를 복사할 수 있는 방법이다.

Naver Blog

SQL(MySQL/MariaDB) - Select Into 문

SQL(MySQL/MariaDB) - Select Into 문 MySQL에서 SELECT ... INTO 형식을 통해 SELECT한 값을 쿼리 결과에 저장하거나 파일에 쓸 수 있다. Select Into 문 예시 -- var_list열 값을 선택하고 변수에 저장 SELECT * INTO var_list from 테이블명; -- var_list란 각각 사용자 정의 변수, -- 저장 프로시저 또는 함수 매개변수 -- 또는 저장 프로그램 지역 변수가 -- 될 수 있는 하나 이상의 변수 목록을 말한다. -- 단일행 제한 데이터 저장 select 컬럼명1, 컬럼명2 into 변수명1, 변수명 2 from 테이블명 limit 1; -- select한 수와 변수의 개수는 일치해야한다. * 출처 / / SELECT ... INTO Statement 13.2.9.1 SELECT ... INTO Statement The SELECT ... INTO form of SELECT enables a quer

Naver Blog

JAVA 문제 54 - 분수찾기 BAEKJOON 1193

JAVA 문제 54 - 분수찾기 BAEKJOON 1193 분수 찾기 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int num = Integer.parseInt(br.readLine()); int cnt = 0; int cnt2 = 0; while (true) { if((cnt += (++cnt2)) >= num) { if(cnt2 % 2 == 0) { System.out.println(num - cnt + cnt2 + "/" + (cnt - num + 1)); }else { System.

Naver Blog

JAVA 문제 48 - 주사위 BAEKJOON 1233

JAVA 문제 48 - 주사위 BAEKJOON 1233 주사위 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String[] arr = br.readLine().split(" "); int[] num = new int[Integer.parseInt(arr[0])]; int[] num2 = new int[Integer.parseInt(arr[1])]; int[] num3 = new int[Integer.parseInt(arr[2])]; int res = 0; for (int i = 0; i

Naver Blog

JAVA 문제 49 - 성 지키기 BAEKJOON 1236

JAVA 문제 49 - 성 지키기 BAEKJOON 1236 성 지키기 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); int N = Integer.parseInt(st.nextToken()); int M = Integer.parseInt(st.nextToken()); int cnt = 0; int cnt2 = 0; String[]

Naver Blog

JAVA 문제 50 - 부호 BAEKJOON 1247

JAVA 문제 50 - 부호 BAEKJOON 1247 부호 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.math.BigInteger; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); for(int i = 0; i < 3; i++) { BigInteger S = new BigInteger("0"); int num = Integer.parseInt(br.readLine()); for(int j = 0; j < num; j++) { BigInteger num2 = new BigInteger(br.readLine());

Naver Blog

JAVA 문제 37 - 저항 BAEKJOON 1076

JAVA 문제 37 - 저항 BAEKJOON 1076 저항 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class Main { public static void main(String args[]) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); ArrayList<String> list = new ArrayList<>(); list.add("black"); list.add("brown"); list.add("red"); list.add("orange"); list.add("yellow"); list.add("green"); list.add("blue"); list.add("violet"); l

Naver Blog

JAVA 문제 38 - 직사각형에서 탈출 BAEKJOON 1085

JAVA 문제 38 - 직사각형에서 탈출 BAEKJOON 1085 직사각형에서 탈출 풀이 import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()," "); int x = Integer.parseInt(st.nextToken()); int y = Integer.parseInt(st.nextToken()); int w = Integer.parseInt

Naver Blog

JAVA 문제 39 - 하얀 칸 BAEKJOON 1100

JAVA 문제 39 - 하얀 칸 BAEKJOON 1100 하얀 칸 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main (String[] args) throws java.lang.Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); char[][] chess = new char[8][8]; int num = 0; for(int i=0;i<8;i++){ String str = br.readLine(); for(int j=0; j<8; j++){ chess[i][j] = str.charAt(j); if((i+j) % 2 == 0 && chess[i][j] == 'F'){ num++; } } }

Naver Blog

JAVA 문제 40 - 더하기 사이클BAEKJOON 1110

JAVA 문제 40 - 더하기 사이클BAEKJOON 1110 더하기 사이클 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main (String[] args) throws java.lang.Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int num = Integer.parseInt(br.readLine()); int cnt = 0; int num2 = num; do { num = ((num % 10) * 10) + (((num / 10) + (num % 10)) % 10); cnt++; } while (num2 != num); System.out.println(cnt); } } * 출

Naver Blog

JAVA 문제 41 - 적어도 대부분의 배수 BAEKJOON 1145

JAVA 문제 41 - 적어도 대부분의 배수 BAEKJOON 1145 - 5개 입력한다음 입력한 값으로 특정 값을 나눴을 때 나머지가 0인게 3개 이상이면 특정 값 출력하는 문제 적어도 대부분의 배수 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int[] numArr = new int[5]; int cnt; int num = 1; StringTokenizer st = new StringTokenizer(br.readLine())

Naver Blog

MSSQL - VIEW DDL 정보 확인하기

MSSQL - VIEW DDL 정보 확인하기 -- DDL 정보 확인 sp_helptext VIEW명; - sp_helptext를 이용해서 VIEW의 DDL 정보를 확인할 수 있다.

Naver Blog

JAVA 문제 42 - 단어의 개수 BAEKJOON 1152

JAVA 문제 42 - 단어의 개수 BAEKJOON 1152 단어의 개수 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()," "); System.out.print(st.countTokens()); } } - 공백 기준으로 단어를 나눈뒤, 해당 단어 개수 만큼 세기 * 출처 1152번: 단어의 개수 1152번 제출 맞힌 사람 숏코딩 재채

Naver Blog

JAVA 문제 43 - 단어 공부 BAEKJOON 1157

JAVA 문제 43 - 단어 공부 BAEKJOON 1157 단어 공부 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str= br.readLine().toUpperCase(); int[] cnt = new int[26]; for (int i = 0; i < str.length(); i++) { int num = str.charAt(i) -'A' ; cnt[num]++; } int max = 0; char ans = '

Naver Blog

JAVA 문제 44 - 농구 경기BAEKJOON 1159

JAVA 문제 44 - 농구 경기BAEKJOON 1159 농구 경기 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int num = Integer.parseInt(br.readLine()); int[] cnt = new int[26]; for(int i=0; i<num; i++){ String str = br.readLine().toLowerCase(); int num2 = str.charAt(0) - 'a'; cnt[num2]+

Naver Blog

JAVA 문제 45 - 운동 BAEKJOON 1173

JAVA 문제 45 - 운동 BAEKJOON 1173 운동 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); int N = Integer.parseInt(st.nextToken()); // 시간 int m = Integer.parseInt(st.nextToken()); // 초기 맥박 int M = Integer.parseInt(st

Naver Blog

JAVA 문제 46 - 8진수 2진수 BAEKJOON 1212

JAVA 문제 46 - 8진수 2진수 BAEKJOON 1212 8진수 2진수 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String[] arr = {"000","001","010","011","100","101","110","111"}; String str = br.readLine(); StringBuilder sb = new StringBuilder(); for(int i=0; i<str.length(); i++ ){ int

Naver Blog

JAVA 문제 47 - 이상한 곱셈 BAEKJOON 1225

JAVA 문제 47 - 이상한 곱셈 BAEKJOON 1225 이상한 곱셈 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str[] = br.readLine().split(" "); long num = 0; for(int i=0; i<str[0].length(); i++){ for(int j=0; j<str[1].length(); j++){ num += Integer.parseInt(String.valueOf(str[0

Naver Blog

JAVA 문제 29 - 2019 카카오 개발자 겨울 인턴십 크레인 인형뽑기 게임

JAVA 문제 28 - 2019 카카오 개발자 겨울 인턴십 크레인 인형뽑기 게임 2019 카카오 개발자 겨울 인턴십 크레인 인형뽑기 게임 풀이 import java.util.Stack; class Solution { public int solution(int[][] board, int[] moves) { int answer = 0; Stack<Integer> s = new Stack<>(); for (int i : moves) { for (int j = 0; j < board.length; j++) { if (board[j][i - 1] != 0) { if (s.isEmpty()) { s.push(board[j][i - 1]); board[j][i - 1] = 0; break; } if (board[j][i - 1] == s.peek()) { s.pop(); answer += 2; } else s.push(board[j][i - 1]); board[j][i - 1] = 0; brea

Naver Blog

JAVA 문제 30 - 수열의 합 BAEKJOON 1024

JAVA 문제 30 - 수열의 합 BAEKJOON 1024 * 예제 입력에서 총합과 길이(2보다 크거나 같은 수)가 주어졌을 때 - 시작 값이 (총합 / 길이) - ((길이 - 1) / 2)의 공식을 갖추고 있다. - 그럼 시작 값을 기준으로 출력을 해야하는데,, 해당 수열이 정상적으로 출력된 경우를 보면 (시작값 + 마지막 값) * (길이 / 2) 만큼의 반복을 돌 경우 값이 나오는 걸 확인할 수 있다. 수열의 합 풀이 import java.util.*; import java.lang.*; import java.io.*; class Main{ public static void main (String[] args) throws java.lang.Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputS

Naver Blog

JAVA 문제 31 - 어린 왕자 BAEKJOON 1004

JAVA 문제 31 - 어린 왕자 BAEKJOON 1004 - 첫번째 줄 테스트 케이스 개수 - 그 다음줄의 첫번째 줄부터 각각 테스트케이스에 대한 출발, 도착점 - 두번째 줄엔 행성계 수 - 세번째 줄엔 N개의 행성계의 중점, 반지름 어린 왕자 풀이 import java.util.*; import java.io.*; public class Main { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int T = Integer.parseInt(br.readLine()); while(T > 0) { StringTokenizer st=new StringTokenizer(br.readLine()); int x1=Integer.parseInt(st.nextToken()); int y1=Integer.p

Naver Blog

JAVA 문제 32 - ACM Craft BAEKJOON 1005

JAVA 문제 32 - ACM Craft BAEKJOON 1005 - 특정 건물을 지으려면 특정 건물 이전의 건물들이 모두 지어져야 짓는 명령을 수행한다는 특징을 가진 문제로 위상 정렬과 관련된 문제였다. ACM Craft 풀이 import java.util.*; import java.io.*; class Main { static int N; static int K; static int[] D; static void building(int[] arr, List<List<Integer>> list, int tar) { Queue<Integer> q = new LinkedList<Integer>(); int[] result = new int[N+1]; // 건물의 소요시간 for(int i=1; i<=N; i++) { result[i] = D[i]; if(arr[i] == 0) q.offer(i); } // 총 소요시간 = 이전까지의 소요시간 + 현재 건물 소요시간 while(!q.is

Naver Blog

JAVA 문제 33 - 분산처리 BAEKJOON 1009

JAVA 문제 33 - 분산처리 BAEKJOON 1009 분산처리 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int cnt = Integer.parseInt(br.readLine()); for(int j=0;j<cnt;j++) { StringTokenizer st = new StringTokenizer(br.readLine()); int a = Integer.parseInt(st.nextToken()); int b = Inte

Naver Blog

JAVA 문제 34 - 제곱수 찾기 BAEKJOON 1025

JAVA 문제 34 - 제곱수 찾기 BAEKJOON 1025 제곱수 찾기 풀이 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.StringTokenizer; public class Main{ public static void main(String[] args) throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); StringTokenizer st = new StringTokenizer(br.readLine(), " "); int

Naver Blog

MSSQL - 교집합, 차집합

MSSQL - 교집합, 차집합 - MSSQL에선 교집합과 차집합 기능을 하는 함수를 지원한다. - 사용 시 반드시 열의 개수나 순서가 모든 쿼리에서 동일해야하며, 데이터 형식이 호환되어야 한다. 교집합, 차집합 -- 구문 { 쿼리 식} { EXCEPT | INTERSECT } { 쿼리 식} -- EXCEPT(차집합) 사용법 SELECT ProductID FROM Production.Product EXCEPT SELECT ProductID FROM Production.WorkOrder ; -- INTERSECT(교집합) 사용법 SELECT ProductID FROM Production.Product INTERSECT SELECT ProductID FROM Production.WorkOrder ; - 해당 함수를 사용할 땐 쿼리 식에서 열의 정의가 같을 필요는 없으나, 암시적 변환을 통해 비교할 수 있을 정도는 되어야 한다. - 만약 다른 경우 비교를 위해 데이터 형식 우선 순위의 규칙

Naver Blog

MSSQL - 세계 시간 변환

MSSQL - 세계 시간 변환 - MSSQL에서 현재 타 국가의 시간을 알려주는 AT TIME ZONE을 제공한다. - AT TIME ZONE은 SQL Server 2016(13.x) 이상 버전에서 사용가능 하다. AT TIME ZONE 예제 -- 사용법 INPUTDATE AT TIME ZONE TIMEZONE - INPUTDATE : datetime과 비슷하거나 같은 형식의 데이터를 의미한다. - 반환값은 대상 표준 시간대의 datetimeoffset 값이다. * 출처 AT TIME ZONE(Transact-SQL) - SQL Server AT TIME ZONE(Transact-SQL) docs.microsoft.com

Naver Blog

MSSQL - SQL Server 시작 이후의 연결 수 확인

MSSQL - SQL Server 시작 이후의 연결 수 확인 - MSSQL 에선 시스템 통계에 관련된 스칼라 함수를 제공하는데 @@CONNECTIONS를 이용하여 마지막으로 SQL Server를 시작한 이후 성공하거나 성공하지 못한 시도된 모든 연결 수를 알 수 있다. @@CONNECTIONS 예제 -- 사용법 @@CONNECTIONS -- 현재 시간과 연결 수 확인 SELECT GETDATE() AS CURRENT_TIME, @@CONNECTIONS ; * 출처 @@CONNECTIONS(Transact-SQL) - SQL Server @@CONNECTIONS(Transact-SQL) docs.microsoft.com

Naver Blog

JAVA 문제 35 - 명령 프롬프트BAEKJOON 1032

JAVA 문제 35 - 명령 프롬프트BAEKJOON 1032 명령 프롬프트 풀이 import java.io.IOException; import java.io.InputStreamReader; import java.io.BufferedReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int num = Integer.parseInt(br.readLine()); String[] fileArr = new String[num]; for (int i = 0; i < num; i++) { fileArr[i] = br.readLine(); } for (int i = 0; i < fileArr[0].length(); i++) { boolean chk = false

Naver Blog

JAVA 문제 36 - 나누기 BAEKJOON 1075

JAVA 문제 36 - 나누기 BAEKJOON 1075 나누기 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int num = Integer.parseInt(br.readLine()); int mod = Integer.parseInt(br.readLine()); num -= (num % 100); while(true) { if(num % mod == 0) { break; } num++; } System.out.printf("%02d", (num % 100)); } } * 출처 1075번:

Naver Blog

MSSQL - CURRENT_USER와 SUSER_NAME의 차이

MSSQL - CURRENT_USER와 SUSER_NAME의 차이 - 둘다 현재 사용자의 이름을 반환하지만 큰 차이점은 CURRENT_USER()는 현재 보안 컨텍스트의 이름을, SUSER_NAME()은 현재 사용자의 ID를 반환한다. CURRENT_USER / SUSER_NAME 예시 -- CURRENT_USER 작성법 SELECT CURRENT_USER; -- CURRENT_USER를 다른 사용자 명으로 보여주고 싶은 경우 EXECUTE AS USER = '가장할 사용자명' -- 다시 되돌리는 방법 REVERT; SELECT CURRENT_USER; -- SUSER_NAME 작성법 SELECT SUSER_NAME([서버 ID]); - CURRENT_USER 함수는 사용자명을 가장해서 다른 사용자명으로 보여줄 수 있다. - SUSER_NAME은 매개변수를 지정하지 않을 경우 현재 사용자에 대한 로그인 id이름이 반환되는데 서버 ID에 NULL이라는 단어가 포함되어 있으면 NULL이

Naver Blog

MSSQL - 문자열 역순 반환

MSSQL - 문자열 역순 반환 - REVERSE() 함수를 통해 문자열을 역순으로 반환한다. REVERSE() 사용법 -- 사용법 SELECT REVERSE('문자열') - REVERSE()함수는 말 그대로 문자열 자체를 반대로 반환해준다.(영어 대소문자 상관없이 무조건 역순으로 반환한다.) * 출처 REVERSE(Transact-SQL) - SQL Server REVERSE(Transact-SQL) docs.microsoft.com

Naver Blog

MSSQL - 반복된 공백 문자열 반환

MSSQL - 반복된 공백 문자열 반환 - SPACE 또는 REPLICATE를 사용한다. 반복된 공백 문자열 반환 -- 사용법 SELECT SPACE(공백 반복 횟수) -- 문자열 1과 2 사이에 공백 값 넣기 SELECT '문자열1' + SPACE(공백 문자열 수) + '문자열2' -- 사용법 SELECT REPLICATE('문자 또는 이진 데이터 형식의 식',반복횟수) -- 문자열 A 앞에 0 4번 붙이기 SELECT REPLICATE('0',4) + 'A' - 유니코드 데이터가 공백 포함 또는 8000개가 넘는 공백을 반환할 경우 SPACE 대신 REPLICATE를 사용한다. - REPLCATE는 특정 문자를 반복횟수만큼 출력할 수 있다. * 출처 SPACE (Transact-SQL) - SQL Server SPACE(Transact-SQL) docs.microsoft.com REPLICATE(Transact-SQL) - SQL Server REPLICATE(Transact-S

Naver Blog

MSSQL - 사용자 정의 메시지 반환

MSSQL - 사용자 정의 메시지 반환 - PRINT, RAISERROR를 이용해서 사용자 정의 메시지를 반환할 수 있다. PRINT, RAISERROR -- PRINT 사용법 PRINT '문자열 또는 유니코드 문자열 상수' | 유효한 문자 데이터 형식의 변수 | 문자열 반환 식 -- RAISERROR 사용법 RAISERROR ( { '사용자 정의 오류 메시지 번호' | '사용자 정의 메시지' | '사용자 정의 메시지와 동일한 형식의 문자열 변수' } { ,사용자 정의 심각도 ,상태 번호 } [ ,argument [ ,...n ] ] ) [ WITH option [ ,...n ] ] -- argument : 사용자 정의 메시지에 대체되는 매개변수 또는 사용자 정의 오류 메시지 번호에 해당하는 메시지 -- with option : 오류에 대한 옵션(오류 로그 기록, 클라이언트에 메시지 전송, 심각도에 상관없이 오류 메시지 반환) - RAISERROR는 PRINT에 비해 3가지 장점이

Naver Blog

JAVA 문제 26 - 2021 카카오 채용연계형 인턴십 숫자 문자열과 영단어

JAVA 문제 26 - 2021 카카오 채용연계형 인턴십 숫자 문자열과 영단어 2021 카카오 채용연계형 인턴십 숫자 문자열과 영단어 풀이 class Solution { public int solution(String s) { String[] num= {"0","1","2","3","4","5","6","7","8","9"}; String[] word= {"zero" , "one" , "two" , "three" , "four" , "five" , "six" , "seven" , "eight" , "nine"}; for (int i = 0 ; i <10 ; i++){ s = s.replace(word[i] , num[i]); } return Integer.parseInt(s); } } * 출처 코딩테스트 연습 - 숫자 문자열과 영단어 네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게

Naver Blog

JAVA 문제 27 - 2020 카카오 인턴십 키패드 누르기

JAVA 문제 27 - 2020 카카오 인턴십 키패드 누르기 2020 카카오 인턴십 키패드 누르기 풀이 class Solution { public String solution(int[] numbers, String hand) { StringBuilder a = new StringBuilder(); int left = 10, right = 12; for (int num : numbers) { if (num == 0) num = 11; switch (num % 3) { case 0 -> { a.append("R"); right = num; } case 1 -> { a.append("L"); left = num; } case 2 -> { int minusL = (num > left) ? num - left : left - num; int minusR = (num > right) ? num - right : right - num; int distanceL = (minusL % 3) + (m

Naver Blog

JAVA 문제 28 - 터렛 BAEKJOON 1002

자바 문제 28 - 터렛 BAEKJOON 1002 터렛 BAEKJOON 1002 풀이 import java.io.*; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); StringTokenizer st; int p = Integer.parseInt(bf.readLine()); for (int i = 0; i < p; i++) { st = new StringTokenizer(bf.readLine()); int x1 = Integer.parseInt(st.nextToken

Naver Blog

MSSQL - hierarchyid 데이터 형식

MSSQL - hierarchyid 데이터 형식 - hierarchyid 데이터 형식은 계층에서 위치를 나타내는 데 사용되되며 가변 길이의 시스템 데이터 형식이다. hierarchyid 데이터 형식의 속성 1. 높은 앞축성 - 트리 구조에서 노드를 나타내는 데 필요한 평균 비트 수는 평균(fanout - 노드의 평균 자식 수)에 따라 다른데, 스토리지를 위해 40비트나 5바이트로 반올림된다. 2. 깊이 우선 순서로 비교 - 깊이 우선 트리 탐색에서 값의 크기에 따라 탐색 순서가 변경되며, 서로 가까이 있는 노드는 서로 가깝게 저장된다. 3. 임의 삽입 및 삭제 지원 - getDescendant 메서드를 사용하면 지정한 노드의 오른쪽 / 왼쪽 또는 두 형제 사이에 형제를 생성할 수 있으.......

Naver Blog

MSSQL - DB 스냅샷

MSSQL - DB 스냅샷 - 스냅샷이란 특정 시간에 있던 데이터가 존재하고 유지시킨 컴퓨터 파일과 디렉터리 모임을 의미하는데, DB 스냅샷은 트랜잭션과 연관성이 있다. - DB 스냅샷은 스냅샷을 만든 시점의 원본 DB와 트랜잭션이 일치하고 항상 원본 DB와 동일한 서버 인스턴스에 존재하며, 파일의 크기는 원본 DB에 따라 변경된다. - DB 스냅샷은 DB의 트랜잭션이 일치하는 읽기 전용 정적 뷰를 의미한다. - 특정 동작을 수행하기 전에 원본 데이터는 스냅샷에 복사되면서 만들어질 때 상태 그대로 데이터 레코드를 유지하는데, 사용자에게 변경되지 않는 것 처럼 보여진다. DB 스냅샷의 이점 1. 보고 용도로 사용 가능 - 스냅샷 생성 시의 데이터.......

Naver Blog

MSSQL - 비대칭 키 ID 반환 함수

MSSQL - 비대칭 키 ID 반환 함수 - ASYMKEY_ID 함수는 비대칭 키의 ID를 반환한다. ASYMKEY_ID 예제 - 해당 함수는 INT 값을 반환한다. - 비대칭 키에 대해 적절한 사용 권한이 필요하며, 비대칭 키에 대한 호출자의 VIEW 권한이 거부되면 안된다. * 출처

Naver Blog

MSSQL - PUBLISHINGSERVERNAME

MSSQL - PUBLISHINGSERVERNAME - DB 미러링 세션에 참여하는 게시된 DB의 원래 게시자 이름을 반환하는 함수다. - 이 함수는 게시된 DB의 원래 게시자를 확인할 수 있으며,모든 유형의 복제에 사용된다. - PUBLISHINGSERVERNAME 함수는 미러 서버 인스턴스에 있는 게시 DB에서 실행 시 DB를 원래 게시한 게시자의 이름이 반환된다. - 만약, 미러 서버 인스턴스에 게시되지 않은 DB나 장애 조치 후 미러 서버 인스턴스에서 게시한 DB에서 실행하면 해당 미러 서버 인스턴스 이름이 반환된다. - 장애 조치란, 1차 시스템이 고장 또는 특정 사유로 인해 이용할 수 없을 경우 기존 기능을 이어 받아 진행할 수 있도록 유지되는 백업 운전 모드를 의미.......

Naver Blog

MSSQL - 바이트 수 구하기

MSSQL - 바이트 수 구하기 - MSSQL에서 바이트 수를 구해주는 함수인 DATALENGTH()를 제공한다. DATALENGTH() 사용방법 - nvarchar와 같은 가변 길이 데이터를 저장할 수 있는 데이터 형식과 함께 사용할 때 매우 유용하다. - 현재 필자 pc에는 한글 한 자당 2byte로 측정되어 있어서 &#34;확인&#34;값을 넣으면 4가 나온다. * 출처

Naver Blog

MSSQL - 문자열 그룹화하기

MSSQL - 문자열 그룹화하기 - oracle의 LISTAGG, mysql의 group_concat과 같이 mssql에도 문자열을 그룹화하는 방법이 있다. - SQL Server 2017 버전 이상을 쓴다면 STRING_AGG() 함수를 사용하면 간단하다. - SQL Server 2016 버전 이하면 STUFF()를 사용하자 문자열 그룹화 - STUFF() 함수는 시작 위치 또는 길이가 음수이거나 시작 위치가 첫번째 문자열을 넘어서면 NULL 문자열이 반환되며, 시작위치가 0이여도 NULL값이 반환된다. - STUFF()는 첫번째 문자열이 중요하며, 삭제할 길이가 첫번째 문자열보다 길면 첫번째 문자까지 삭제된다. - STRING_AGG() 함수는 모든 호환성 수준에서 사용할 수 있다. * 출처

Naver Blog

MSSQL - 데이터 타입 캐스팅 확인하기

MSSQL - 데이터 타입 캐스팅 확인하기 - MSSQL 에선 지정한 TRY_CAST() 함수를 이용한다. TRY_CAST() 예제 - 함수명에서 알 수 있듯이 프로그래밍 언어에서의 TRY와 매우 흡사한 기능을 갖고 있는데, 데이터 타입을 제대로 명시하지 않으면 NULL을 반환한다. * 출처 https://docs.microsoft.com/ko-kr/sql/t-sql/functions/try-cast-transact-sql?view&#x3D;sql-server-ver15

Naver Blog

MSSQL - 논리식 판별 함수

MSSQL - 논리식 판별 함수 - MSSQL에선 논리값을 판별하는 IIF() 함수를 지원한다. IIF 예제 - 해당 함수는 CASE문의 약식 방법중 하나로, CASE문에 적용되는 규칙이 IIF에서도 적용된다. - IIF는 Azure Synapse Analytics의 전용 SQL 풀에서 지원되지 않는다. * 출처

Naver Blog

MSSQL - 지정한 날짜가 포함된 달의 마지막 날을 반환하는 방법

MSSQL - 지정한 날짜가 포함된 달의 마지막 날을 반환하는 방법 - MSSQL 에선 특정 달의 마지막 날을 구할 수 있는 EOMONTH() 함수를 제공한다. EOMONTH() 예제 - EOMONTH()의 함수의 첫번째 매개변수에는 기준 날짜를 작성한다. - 특정 기준 날짜에서 몇 달 뒤 혹은 몇 달 전의 마지막 날을 알고 싶다면, 2번째 매개변수에 양수 또는 음수값을 입력하여 이전 달, 이후 달의 마지막 날을 알 수 있다. * 출처

Naver Blog

자바 알고리즘 - Buddy Memory allocation

자바 알고리즘 - Buddy Memory allocation - 효율적인 메모리 요청을 만족하도록 메모리를 여러 부분으로 나누는 메모리 할당 알고리즘이다. Buddy Memory allocation 작동 원리 1. 2의 거듭제곱값으로 메모리를 할당하는데, 시스템이 갖고 있는 메모리에 맞춰 최대 할당할 수 있는 블록이 존재한다. 2. 할당할 수 있는 메모리의 범위가 존재하는 만큼 상한선과 하한선(할당할 수 있는 가장 작은 메모리 블록 범위)를 정해줘야 하며, 이 점은 메모리 낭비를 낮추는데 용이하다. 3. 메모리 할당 시 프로그램에 요청 크기에 맞춰 검색해서 메모리 슬롯을 할당하지만, 만약 발견되지 않다면, 아래와 같이 메모리 슬롯을 만든다. 3-1) 요청된 메모리.......

Naver Blog

MSSQL - 날짜 차이 구하기

MSSQL - 날짜 차이 구하기 - MSSQL에서 날짜 차이를 구하는 방법을 작성한 글이다. MSSQL - 날짜 차이 구하기 - 날짜 1에서 날짜 2를 뺀 값을 나타내는 함수로 날짜 컬럼을 날짜1, 현재 날짜를 날짜 2에 넣어서 현재 날짜와의 차이를 구하는데 매우 용이하다. - 구분자는 다음과 같다. * 출처

Naver Blog

자바 문제 24 - 2022 KAKAO BLIND RECRUITMENT 신고 결과 받기

자바 문제 24 - 2022 KAKAO BLIND RECRUITMENT 신고 결과 받기 2022 KAKAO BLIND RECRUITMENT 신고 결과 받기 - HashMap으로 아이디를 세팅하고, HashSet을 통해 신고자, 대상자 id를 나누는데 Set특성을 이용하여 중복을 제거할 수 있다. - 아이디 리스트 길이만큼의 반복문에서 대상 아이디의 신고당한 횟수가 k(정지 기준 판별 신고 횟수)보다 적지 않을 경우 반환할 배열에 신고횟수를 추가해준다. * 출처

Naver Blog

자바 문제 25 - 2021 Dev-Matching: 웹 백엔드 개발자(상반기) 로또의 최고 순위와 최저 순위

자바 문제 25 - 2021 Dev-Matching: 웹 백엔드 개발자(상반기) 로또의 최고 순위와 최저 순위 2021 Dev-Matching: 웹 백엔드 개발자(상반기) 로또의 최고 순위와 최저 순위 풀이 - int배열에서 binarySearch를 이용하여 배열 안에 요소값이 있는지 체크한다. * 출처

Naver Blog

자바 알고리즘 - 이진 트리

자바 알고리즘 - 이진 트리 - 이진 트리란, 한 노드가 최대 2개의 자식 노드를 가질 수 있는 트리를 의미한다. - 흔히 사용되는 비선형 자료 구조로서 한 자료에 여러 자료가 존재할 수 있다. 이진트리의 종류 1. 포화 이진 트리(Full Binary Tree) - 모든 노드에 0또는 2개의 자식이 있는 이진 트리 2. 완전 이진 트리(Complete Binary Tree) - 마지막 레벨 노드 전의 노드는 반드시 존재한다. - 마지막 레벨에선 모든 노드가 가능한 왼쪽에 존재한다.(Heap과 관련있음) 3. 완벽 이진 트리(Perfect Binary Tree) - 모든 내부 노드에 2개의 자식이 있고, 모든 리프 노드가 동일한 깊이 또는 동일한 수준에 있는 이진 트리 4. 균형 이진 트리(Bala.......

Naver Blog

MSSQL - 날짜 더하기

MSSQL - 날짜 더하기 - MSSQL에서 날짜 더해주는 함수인 dateadd()를 제공한다. DATEADD 함수 사용법 - 더할 범위엔 아래 그림의 datepart를 적어주는데, datepart엔 약어가 존재한다. * datepart 약어 모음 * 출처

Naver Blog

SQL(ORACLE 기준) - MOD와 REMAINDER의 차이

SQL(ORACLE 기준) - MOD와 REMAINDER의 차이 - 함수명(대상값, 몫)으로 둘의 작성법은 같으며, 기능도 나머지를 출력하는 점이 동일하다. MOD와 REMAINDER의 차이 - 두 함수 기능은 같지만, 조금은 다른점이 있다. - 가장 큰 차이점은 음수를 매개변수로 썼을 때 두드러지는데, MOD는 음수를 절대값으로 변환하여 양수로 사용하지만, REMAINDER는 그렇지 않기에 서로 다른값이 나올 수 있다. - 몫을 추출할 때 REMAINDER는 ROUND함수를, MOD는 FLOOR함수를 쓴다는 점이 매우 크다. * 출처

Naver Blog

SQL(MySQL/MariaDB) - 계층형 쿼리 WITH RECURSIVE

SQL(MySQL/MariaDB) - 계층형 쿼리 WITH RECURSIVE - mysql 5.7 이하 버전에선 사용할 수 없는 계층형 쿼리로, 재귀형식의 테이블을 표현할 수 있다. WITH RECURSIVE 사용법 - 주로 피보나치 수열 생성, 계층형 쿼리를 사용할 때 쓴다. * 출처

Naver Blog

Fiddler 다운로드(Windows 기준)

Fiddler 다운로드(Windows 기준) - 웹 디버깅 툴인 fiddler를 Windows OS에서 다운로드 하는 걸 보여준다. Fiddler 다운로드 1. https://www.telerik.com/fiddler에 접속해서 try now 버튼을 클릭 2. 아래 사진에서 첫번째 입력칸에 자신의 이메일을, 그 아래엔 지역을 선택해주고 체크박스를 체크해준뒤 download를 하면 된다. - everywhere는 평가판으로 30일 무료고 Classic 버전으로 다운로드 하면 된다. 3. 다운로드 파일을 실행해주자 - 동의함을 눌러주면 자연스레 다운로드된다. 4. 실행 시 회원가입을 한 이메일로 접속하면 끝 5. 체크박스 체크한 뒤, 동의해주기 6. 시작하면 끝

Naver Blog

localhost 폼 파라미터 확인(Fiddler 프로그램 사용)

localhost 폼 파라미터 확인(Fiddler 프로그램 사용) - 로컬에서 개발자도구의 네트워크 말고도 좀 더 명확하게 보고자 찾은 Fiddler에서 폼 파라미터를 확인하는 방법을 다룬 글이다. - Fiddler를 설치했다는 기준에서 사용하는 방법으로, 만약 설치못했다면 아래 url에서 보고 설치하고 오자(여기선 Everywhere로 설치했는데, 필자는 Classic을 추천한다.) Fiddler 폼 파라미터 확인 방법 - 좌측 탭의 url목록에서 보려고 한 url을 클릭 - 우측 탭의 Inspector 탭 이동 - 이후 WebForms탭 이동하면 해당 파라미터를 볼 수 있음

Naver Blog

자바 알고리즘 - Free list

자바 알고리즘 - Free list - 동적 메모리 할당 체계에서 사용되는 데이터 구조로 사용 가능한 블록의 집합 - 메모리의 미할당 영역을 Linked List로 연결시켜서 운용하는 리스트로 모든 오브젝트들이 동일 크기를 갖고 있으면, Free list가 memory pool에서 메모리 할당하는데 가장 적합하다. - 할당/미할당 영역을 매우 간단하게 할당하거나 해제할 수 있으며, 영역 할당 시 Free list의 가장 끝 부분에 있는 영역을 제거하고 그 영역을 할당시키며, 할당 시 크기를 맞춰 영역을 찾는다. - Free list는 Linked List, CPU 캐시, 프로세서가 짧은 시간 동안 동일 메모리 위치 집합에 반복적인 접근 활용을 제대로 할 수 없는 단점을 가지고 있는.......

Naver Blog

SQL 문제 53 - Draw The Triangle 1(HackerRank)

SQL 문제 53 - Draw The Triangle 1(HackerRank) Draw The Triangle 1 풀이 - 처음엔 문자를 붙여서 하는줄 알았는데 자세히 보니 문자 사이에 공백 한칸이 존재하는걸 알 수 있었다. - 오라클에서 CONNECT BY, MYSQL에선 변수 설정으로 임시 행을 생성한다. * 출처

Naver Blog

SQL 문제 54 - Draw The Triangle 2(HackerRank)

SQL 문제 54 - Draw The Triangle 2(HackerRank) Draw The Triangle 2 풀이 - 이전과 달리 위에서 행번호에 맞춰 *을 출력하는 문제로 순서를 바꾸면 된다. - 이전 문제 MYSQL 풀이에서 시작 번호가 21여서 행 번호만큼 뺏지만, 이번 문제는 0부터 시작해서 행번호만큼 출력하기 위해 LIMIT를 이용한 풀이법이다. * 출처

Naver Blog

SQL 문제 55 - Print Prime Numbers(HackerRank)

SQL 문제 55 - Print Prime Numbers(HackerRank) Print Prime Numbers 풀이 * 출처

Naver Blog

SQL 문제 56 - 15 Days of Learning SQL(HackerRank)

SQL 문제 56 - 15 Days of Learning SQL(HackerRank) 15 Days of Learning SQL 풀이 - 2016-03-01부터 꾸준히 1회이상 제출한 해커나 최대 제출을 한 해커 출력하기 * 출처

Naver Blog

SQL 문제 51 - Contest Leaderboard(HackerRank)

SQL 문제 51 - Contest Leaderboard(HackerRank) Contest Leaderboard 풀이 * 출처

Naver Blog

SQL 문제 52 - Interviews(HackerRank)

SQL 문제 52 - Interviews(HackerRank) Interviews 풀이 * 출처

Naver Blog

SQL 문제 46 - Average Population of Each Continent(HackerRank)

SQL 문제 46 - Average Population of Each Continent(HackerRank) Average Population of Each Continent 풀이 - CONTINENT의 평균값에서 내림으로 정수를 만드는데, 그룹화 하면 끝 * 출처

Naver Blog

SQL 문제 47 - The Report(HackerRank)

SQL 문제 47 - The Report(HackerRank) The Report 풀이 - 점수 내림차순으로 출력할 때, 등급이 7 이하는 이름 내림차순으로 출력 * 출처

Naver Blog

SQL 문제 48 - Top Competitors(HackerRank)

SQL 문제 48 - Top Competitors(HackerRank) - 문제가 좀 긴데, 필자가 영어에 매우 약해서 파파고의 힘을 빌렸다. - submissions 테이블에 score값이 difficulty 테이블의 score와 일치(만점)인 챌린지가 2개 이상인 참가자를 찾는 것 - submissions table : 제출한 사람들의 정보 - challenge table : 챌린지 사람들 정보 - difficulty table : 챌린지 스코어 - hacker table : 해커 사람들 정보 Top Competitors 풀이 - 솔직히 좀 헷갈리긴 했는데, 핵심은 챌린지 만점이 2개 이상인 사람을 찾는 것, 동일한 챌린지 만점인 사람이 있다면, 해커 id 오름차순으로 정렬하라는 것 - submissions 테이블의 hacker_id와 hacker 테이블의 hacker_id를.......

Naver Blog

SQL 문제 49 - Ollivander's Inventory(HackerRank)

SQL 문제 49 - Ollivander&#x27;s Inventory(HackerRank) - 높은 power와 age를 가진 non-evil 지팡이에서 론이 구입할 때 최소 골드가 드는 지팡이를 정렬하는 문제 Ollivander&#x27;s Inventory 풀이 - non-evel &#x3D; 0, power, age의 그룹화된 지팡이들중 최소 금액 필요한 지팡이 정보를 서브쿼리로 가져온다. - 서브쿼리로 가져온 지팡이 정보(필요한 금액)를 완드 품질 테이블의 coin_needed 컬럼에 연결한 뒤, power / age 내림차순으로 출력 * 출처

Naver Blog

MSSQL - 특정 컬럼을 수정/삭제 할 때 에러 해결

MSSQL - 특정 컬럼을 수정/삭제 할 때 에러 해결 - MSSQL에서 특정 컬럼을 수정/삭제 할 때 &#x27;DF__TB_CONFIG_P__DESC__0D84EF7E&#x27;라는 에러 문제를 해결하고자 적은 글이다. 특정 컬럼을 수정/삭제 할 때 에러 해결 방법 - &#x27;DF__TB_CONFIG_P__DESC__0D84EF7E&#x27;란 제약조건이 있어서 생긴 문제로, 수정/ 삭제할 때 테이블의 &#x27;DF__TB_CONFIG_P__DESC__0D84EF7E&#x27; 제약조건을 삭제해주면 된다.

Naver Blog

SQL 문제 50 - Challenges(HackerRank)

SQL 문제 50 - Challenges(HackerRank) Challenges 풀이 * 출처

Naver Blog

자바 알고리즘 - 선형 리스트

자바 알고리즘 - 선형 리스트 - 고정 크기의 데이터들을 자연스럽게 나열한 구조 - 자연스러운 구조에 맞춰 순차적인 데이터 이동에 유용하다. - 논리적, 물리적 순서가 같다는 점이 접근 속도가 빠르다. - 하지만, 리스트 원소 위치 변경 시 정렬 작업이 필요하므로 데이터가 많을 수록 많은 데이터의 이동으로 삽입, 삭제 시 비효율적이다. * 출처

Naver Blog

자바 알고리즘 - 트리

자바 알고리즘 - 트리 - 객체를 담는 구조로 나무와 같은 형태를 띄고 있으며 계층구조로 보면 이해하기 쉽다. - 트리는 노드를 기반으로 Root(맨 처음)노드와 파생 노드가 존재하는데, 파생된 노드에서 자식이 없는 노드를 Leaf 노드라고 하며, 파생된 노드에서 또 다른 자식을 갖고 있는 노드영역을 Sub Tree라고 한다. - 나무에서 잎이 뻗쳐지듯이, 노드끼리 이어진 선은 한개만 존재한다. * 출처

Naver Blog

SQL 문제 23 - Binary Tree Nodes(HackerRank)

SQL 문제 23 - Binary Tree Nodes(HackerRank) - 노드 값으로 정렬된 이진 트리의 노드 유형을 찾는 문제로 이진 트리의 원리에 대해 알아야 한다. - Root : 최상위 노드 - Leaf : 최하위 노드 - Inner : Root도 Leaf도 아닌 노드 Binary Tree Nodes 풀이 - BST 테이블을 LEFT OUTER JOIN을 사용하여 푸는 문제다. * 출처