1463번 Python 과거에 풀어봤던 문제긴한데 역시 제대로 이해하지 않고 급하게 넘어간 느낌이라 처음부터 다시 풀어보고 있다. 1로 만들기문제는 가장 최적의 해로 주어진 수를 1로 만드는 문제이다. 총 3가지의 연산이 있다. 이를 그리디로 풀었을 경우에는 10을 넣었을 때 4가 나와 오답이 발생한다. 이는 최적의 수를 구하는 것이 아닌 눈 앞에 보이는 가장 탐욕적인 방법으로 풀었기에 최적의 해를 구할 수 없었기 때문이다. 모든 경우의 수를 다 대입해서 해결해야하는 DP 문제이다. 나는 가장 먼저 점화식을 어떻게 만들지 생각해봤다. 2 -> 13 -> 14 -> 2 -> 15 -> 4 -> 2 -> 1...최적의 해를 구하면 다음과 같이 구할 수 있다. 자세히 보면 규칙이 보인다. 2 -> 1 # d[2] = 13 -> 1 .. 2024. 8. 18. DP Dynamic Programming의 줄임말로 동적 계획법이라고 한다. 주어진 문제가 있으면 이를 여러 개의 하위 문제로 나누어 푼 다음, 그것을 결합하여 목적에 도달하는 방법이다. 하위 문제를 나누어 푼 답들을 미리 저장하고 같은 하위 문제가 나왔을 때, 또 계산을 하는 것이 아닌 저장한 하위 문제의 값을 사용해 계산 횟수를 줄인다. 해결책을 저장한 것을 메모이제이션(Memoization)이라고도 한다. DP를 사용하는 경우대부분의 경우에 사용할 수 있는 것은 아니다. DP를 사용하는 경우는 하위 문제가 있는지, 최적 부분 구조가 존재하는지로 확인할 수 있다. 하위 문제가 있다는 것은 더 작은 부분으로 나눌 수 있고, 그 나눈 부분 일부가 재활용이 가능하다는 뜻이다. 다만, 각각의 부분들은 다른 모.. 2024. 8. 17. 트랜잭션 그동안 DML을 배우면서 INSERT, UPDATE, DELETE, SELECT 기본적인 쿼리 질의어들을 학습했다. 이제부터 학습할 것은 트랜잭션이라는 것인데 이 개념을 알기 전에 하나 생각해볼 것이 있다. 계좌의 금액을 변경하는 UPDATE 로직이 있다고 가정해보자. 계좌는 결국 돈이고 돈의 영역은 실무에서 엄청나게 중요한 부분이기에 UPDATE, DELETE 질의어를 사용하는데 많은 책임이 필요해질 정도로 중요한 부분이다. 하지만 사용자가 돈을 사용하면 남은 계좌는 변경해야되기에 사용을 안할 수는 없다. 이 때, 문제는 UPDATE 문을 실행했는데 모종의 문제로 인해 계좌의 금액이 잘못되는 식으로 변경이 되었다거나 변경되었는데 계좌의 금액이 맞지 않는다는 등 데이터가 유실되었다면 이는 엄청난 상황으로.. 2024. 8. 17. DELETE 마지막으로 알아볼 DML은 DELETE이다. 사실, 실무에서는 DELETE를 잘 사용하지 않는다. 로그로써 사용하는 것도 있고 회원 정보라던가 하는 것들은 모두 남겨야 하는 데이터여서 엄청 잘 사용한다고 볼 수는 없다. DELETE를 하게 되면 물리적인 삭제가 되기에 일반적으로는 is_delete와 같은 컬럼을 하나 생성해 이를 true/false로 관리하여 논리적 삭제를 진행한다. 하지만 알고는 있으면 좋기에 정리하려고 한다. 이번에는 따로 테이블을 복사하지는 않는다. 기존의 복사한 DEPT_TEMP2를 사용하겠다. DELETEDELETE FROM 테이블구조는 생각보다 단순하다. DELETE FROM DEPT_TEMP2 dt WHERE DEPTNO = 40빠르게 DEPT_TEMP2 테이블에서 DEPTN.. 2024. 8. 11. UPDATE 두번째 DML인 UPDATE문에 대해 알아보겠다. 시작하기에 앞서 기존에 있는 테이블을 또 복사해보겠다. UPDATECREATE TABLE DEPT_TEMP2 AS SELECT * FROM DEPT복사를 완료했으면 UPDATE에 기본 사용법을 알아보겠다. UPDATE 테이블 SET 컬럼1 = '수정할 데이터', ...이 형태 또한 간단하다. 위와 같은 형태로 사용해주면 된다. 복사한 테이블에서 연습해보겠다. DEPT_TEMP2 테이블의 LOC 컬럼에 해당하는 모든 데이터를 SEOUL로 바꿔보자. UPDATE DEPT_TEMP2 SET LOC = 'SEOUL'이렇게 하면 모든 컬럼에 해당하는 데이터의 LOC 컬럼 데이터가 모두 SEOUL로 바뀌었다. 혹시 DB 툴을 사용하는 경우에는 모든 컬럼이 변경되는 .. 2024. 8. 11. INSERT 지금까지 학습했던 것은 DML의 SELECT문이었다. SELECT는 조회를 할 때 사용하는 것이었는데 이제 남은 DML인 INSERT, UPDATE, DELETE에 대해 학습을 하겠다. 첫번째는 INSERT부터 정리한다. INSERTCREATE TABLE DEPT_TEMP AS SELECT * FROM DEPT일단 DDL CREATE를 사용해 테이블을 생성한다. DEPT 테이블을 복사해 만들겠다. DROP TABLE DEPT_TEMP행여나 테이블을 잘못 복사했다면 DROP을 사용한다. 테이블을 생성했으면 로우 데이터를 하나 삽입해보자. INSERT의 사용법은 생각보다 간단하다. INSERT INTO 테이블 (컬럼1, 컬럼2, ...) VALUES ('데이터1', '데이터2', ...)위와 같은 형태로 값.. 2024. 8. 11. 이전 1 ··· 3 4 5 6 7 8 9 ··· 18 다음