프로그래머스 코딩테스트 - 영어 끝말잇기 (JAVA)
·
코딩테스트
문제 설명1부터 n까지 번호가 붙어있는 n명의 사람이 영어 끝말잇기를 하고 있습니다. 영어 끝말잇기는 다음과 같은 규칙으로 진행됩니다.1번부터 번호 순서대로 한 사람씩 차례대로 단어를 말합니다.마지막 사람이 단어를 말한 다음에는 다시 1번부터 시작합니다.앞사람이 말한 단어의 마지막 문자로 시작하는 단어를 말해야 합니다.이전에 등장했던 단어는 사용할 수 없습니다.한 글자인 단어는 인정되지 않습니다.다음은 3명이 끝말잇기를 하는 상황을 나타냅니다.tank → kick → know → wheel → land → dream → mother → robot → tank위 끝말잇기는 다음과 같이 진행됩니다.1번 사람이 자신의 첫 번째 차례에 tank를 말합니다.2번 사람이 자신의 첫 번째 차례에 kick을 말합니다...
프로그래머스 코딩테스트 - N개의 최소공배수
·
코딩테스트
문제 설명두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배수는 n 개의 수들의 배수 중 공통이 되는 가장 작은 숫자가 됩니다. n개의 숫자를 담은 배열 arr이 입력되었을 때 이 수들의 최소공배수를 반환하는 함수, solution을 완성해 주세요.제한 사항arr은 길이 1이상, 15이하인 배열입니다.arr의 원소는 100 이하인 자연수입니다.  입출력 예arrresult[2,6,8,14]168[1,2,3]6    내가 푼 문제 풀이최대공약수 또는 최소공배수를 구할 때 유클리드 알고리즘(호제법)을 자주 쓴다.나도 유클리드 호제법을 사용해서..
유클리드 호제법(Euclidean algorithm)
·
코딩테스트/알고리즘
유클리드 호제법이란?유클리드 호제법(Euclidean algorithm)은 유클리드 알고리즘이라고도 불리우며,두 양의 정수 혹은 자연수의 최대공약수(GCD, Greatest Common Divisor)를 구하는 효율적인 알고리즘이다.그리스 수학자 유클리드((Euclid)가 작성한 원론에 적혀있는 내용으로, 인류 최초의 알고리즘이라고 한다.   원리GCD(a,b)=GCD(b,amodb) 두 수 a와 b (a>b)의 최대공약수는 a를 b로 나눈 나머지와 b의 최대공약수와 같다.이 과정을 반복하여 나머지가0이 될 때 나누는 수가 두 수의 최대공약수이다.  큰 수인 a를 b로 나눈 나머지 r을 구한다.a를 b로 대체하고, b를 r로 대체한다.나머지 r이 0이 될 때까지 반복한다.나머지가 0이 되었을 때, 나누는..
프로그래머스 코딩테스트 - 구명보트 (java)
·
코딩테스트
문제 설명무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다.예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 50kg]이고 구명보트의 무게 제한이 100kg이라면 2번째 사람과 4번째 사람은 같이 탈 수 있지만 1번째 사람과 3번째 사람의 무게의 합은 150kg이므로 구명보트의 무게 제한을 초과하여 같이 탈 수 없습니다.구명보트를 최대한 적게 사용하여 모든 사람을 구출하려고 합니다.사람들의 몸무게를 담은 배열 people과 구명보트의 무게 제한 limit가 매개변수로 주어질 때, 모든 사람을 구출하기 위해 필요한 구명보트 개수의 최솟값을 return 하도록 solution 함수를 작성해주세요.제한사..
프로그래머스 코딩테스트 연습 - 다음 큰 숫자(java)
·
코딩테스트
1. 문제 상황자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다.조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다.조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니다.조건 3. n의 다음 큰 숫자는 조건 1, 2를 만족하는 수 중 가장 작은 수 입니다.예를 들어서 78(1001110)의 다음 큰 숫자는 83(1010011)입니다.자연수 n이 매개변수로 주어질 때, n의 다음 큰 숫자를 return 하는 solution 함수를 완성해주세요. [제한 사항]n은 1,000,000 이하의 자연수 입니다.  2. 입출력 예nresult78831523   3. 문제 풀이 (mine...)import java.lang.Integer;class Solution..
프로그래머스 코딩테스트 연습 - 올바른 괄호 (스택/큐 java)
·
코딩테스트
| 문제 설명괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어- "()()" 또는 "(())()" 는 올바른 괄호입니다.- ")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다.'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.[제한사항]문자열 s의 길이 : 100,000 이하의 자연수문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다.  | 입출력 예시sanswer"()()"true"(())()"true")()("false"(()("false  | 풀이 1 (내가 ..
[MSSQL] JOIN의 종류 (논리적, 물리적)
·
코딩 공부 기록/SQL
조인의 정의와 논리적 조인(INNER, OUTER 등), 물리적 조인(Nested Loop Join, Merge Join 등) 에 대해 자세히 알아보자.  조인이란?관계가 있는 두 개 이상의 테이블을 주어진 조건으로 결합하여 하나의 결과 집합으로 출력하는 기능.-- 기본 구문SELECT * FROM 테이블명 AJOIN 테이블명 BON 조인 조건   논리적 조인 (INNER, OUTER, CROSS, APPLY) 1. INNER JOIN 교집합되는 (조인 조건을 모두 만족하는) 데이터만 결과로 출력하는 조인. SELECT e.Name, d.Dept_no, d.Dept_NameFROM Employee e INNER JOIN Department dON e.Dept_No = d.Dept_No A와 B에서 교집합..
[MSSQL] 테이블 복제 복사 방법
·
코딩 공부 기록/SQL
작업을 하다보면 테이블을 복사해야하는 경우가 종종 있다. 테이블만 복사, 테이블+데이터 복사, A데이블 -> B테이블 데이터만 복사.  1. 테이블 + 데이터복사SELECT * INTO 복사 테이블명FROM 원본 테이블명  2.  테이블만 복사SELECT *INTO 복사 테이블명FROM 원본 테이블명WHERE 1=2 3. A테이블 -> B테이블 데이터 복사A라는 테이블이 있고 B라는 테이블이 있는데, A의 데이터를 B로 옮기고 싶을 때 사용한다.INSERTINTO 복사 테이블명(B)SELECT * FROM 원본 테이블명(A)
[MSSQL] 격리 수준 (ISOLATION)
·
코딩 공부 기록/SQL
격리 수준(ISOLATION)이란?트랜잭션이 수행될 때 다른 트랜잭션으로부터 영향을 받지 않게 고립성을 유지시키는 것.다른 트랜잭션에 영향을 받지 않도록 잠금(Lock)을 사용하여 격리 수준으로 잠금의 유형을 정리한다.  격리 수준의 필요성데이터 일관성 유지 : 트랜잭션 간의 간섭을 방지하여 데이터의 일관성을 보장동시성 제어 : 여러 트랜잭션이 동시에 실행될 수 있도록 하여 성능과 데이터 무결성 간의 균형을 맞춤비즈니스 요구 사항 충족 : 각 애플리케이션의 데이터 처리 요구에 맞는 격리 수준을 선택할 수 있음트랜잭션 충돌 방지 : 동시에 실행되는 트랜잭션 간의 충돌을 방지하여 데이터 무결성을 유지성능 최적화 : 적절한 격리 수준을 통해 성능과 데이터 일관성 간의 균형을 조절 동시성에 대한 3가지 문제점1..
[MSSQL] SQL Server 잠금(LOCK)의 종류
·
코딩 공부 기록/SQL
격리 수준에 대해 공부하다가 잠금의 종류를 몰라서 내용 이해가 어려웠다.그래서 격리 수준 공부 중단하고 잠금부터 공부...를.............................. 1. 잠금의 종류1) 공유 잠금 (Shared Lock, S)데이터를 읽을 때 사용되는 잠금이다.  (SELECT문)여러 트랜잭션이 동시에 데이터를 읽을 수 있지만, 데이터에 대한 수정은 불가능하다.여러 트랜잭션이 동시에 공유 잠금을 가질 수 있지만, 공유 잠금 동안 해당 데이터에 대한 배타적 잠금은 허용되지 않음.  2) 배타적 잠금 (Exclusive Lock, X)데이터를 수정할 때 사용되는 잠금으로 INSERT, UPDATE, DELETE에서 사용된다.배타적 잠금이 설정된 데이터는 다른 트랜잭션이 읽거나 수정할 수 없고,..