일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- html
- 해슁
- BFS
- 검색트리
- 다이나믹 프로그래밍
- DP
- 알고리즘
- inflearn
- 순환
- Color
- javascript
- CSS
- 구현
- java
- Kotlin
- 정렬
- codecademy
- android
- SWEA
- 코딩테스트
- Spring
- CleanCode
- DFS
- front-end
- 프로그래머스
- Web
- 자바
- 클린코드
- SQL
- algorithm
- Today
- Total
목록분류 전체보기 (183)
깡뇽
여러 테이블을 연결해서 데이터를 추출하고자 한다면 JOIN을 사용해야 한다. 레코드를 조합하는 방식에 따라 아래와 같이 구분된다. ☆ INNER JOIN : ON 절의 만족하는 데이터만 추출 ☆ LEFT JOIN : 첫 번째 테이블이 기준이 되어 두 번째 테이블을 조합(ON 절의 조건에 만족하지 않으면 첫 번째 테이블의 필드 값은 그대로 가져오지만 해당 레코드의 두 번째 필드 값은 모두 NULL로 표시) ☆ RIGHT JOIN : 두 번째 테이블이 기준이 되어 첫 번째 테이블을 조합(ON 절의 조건에 만족하지 않으면 두 번째 테이블의 필드 값은 그대로 가져오지만 해당 레코드의 첫 번째 필드 값은 모두 NULL로 표시) 없어진 기록 찾기 SELECT OUTS.ANIMAL_ID, OUTS.NAME FROM ..
이름이 없는 동물의 아이디 SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME IS NULL ORDER BY ANIMAL_ID IS NULL : 데이터가 NULL인지 확인 이름이 있는 동물의 아이디 SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME IS NOT NULL ORDER BY ANIMAL_ID IS NOT NULL : 데이터가 NULL이 아닌지 확인 NULL 처리하기 SELECT ANIMAL_TYPE, IFNULL(NAME, "No name"), SEX_UPON_INTAKE FROM ANIMAL_INS ORDER BY ANIMAL_ID IFNULL(컬럼명, 대체값) : 추출하려고 하는 컬럼명에 NULL값이 있는 경우 대체값으로 바꾸어 추출
고양이와 개는 몇 마리 있을까 SELECT ANIMAL_TYPE, COUNT(*) AS count FROM ANIMAL_INS GROUP BY ANIMAL_TYPE GROUP BY : 컬럼에서 같은 것들끼리 묶기 동명 동물 수 찾기 #방법1 SELECT NAME, COUNT(NAME) AS 'COUNT' FROM ANIMAL_INS GROUP BY NAME HAVING COUNT(NAME) >= 2 ORDER BY NAME #방법2 SELECT NAME, COUNT(NAME) AS 'COUNT' FROM ANIMAL_INS GROUP BY NAME HAVING COUNT(NAME) > 1 ORDER BY NAME #방법3 SELECT NAME, COUNT(*) AS COUNT FROM ANIMAL_INS..
DFS 유형의 다른 문제 도전!! 배추밭 안에 배추의 좌표값이 주어지고 해당 좌표와 상하좌우로 연결된 좌표에도 배추가 있으면 하나의 구역으로 취급한다. 한 구역마다 배추흰지렁이 1마리가 사는데 배추밭에 있는 총 지렁이의 마리 수를 출력하자. 1012번 유기농 배추 풀이 [시도1] 맞았습니다!! with 솔루션 T = int(input()) #케이스 개수 #케이스 개수 만큼 코드 작동 while T > 0: N, M, K = map(int, input().split()) #각각 세로, 가로, 좌표 개수 field = [[0]*N for i in range(M)] #배추밭 #배추밭 배추 좌표 입력받기 for _ in range(K): x, y = map(int, input().split()) field[y]..
DFS와 관련된 문제를 풀고자 해당 유형의 문제들 중에서 그나마 난이도가 낮은 녀석을 골라보았다. 네트워크가 연결된 컴퓨터들은 함께 바이러스에 걸리게 된다. 첫째 줄 : 컴퓨터의 수 둘째 줄 : 네트워크 상 직접 연결된 컴퓨터 쌍의 수 N 줄 : 네트워크 상 직접 연결된 컴퓨터 번호 쌍 이러한 입력이 있을 때, 1번 컴퓨터의 감염으로 인해 바이러스에 걸리게 되는 컴퓨터의 수를 구하자. 2606번 바이러스 풀이 [시도1] 맞았습니다!! with 솔루션 n = int(input()) l = int(input()) graph = [[] for _ in range(n+1)] for _ in range(l): a, b = map(int, input().split()) graph[a].append(b) graph[..
변수를 private과 public으로 설정하는 각각의 이유들이 존재한다. 자료 추상화 코드에서 인터페이스를 만들거나 변수마다 get 함수와 set 함수를 무작정 추가하는 것이 아니라 추상적인 개념으로 표현하도록 해야 한다. 자료를 세세하게 공개하기보다는 추상적인 개념으로 표현하는 편이 좋다. ˙ ˙ ˙ 개발자는 객체가 포함하는 자료를 표현할 가장 좋은 방법을 심각하게 고민해야 한다. 자료/객체 비대칭 객체와 자료 구조는 근본적으로 반대의 성질을 가지기에 "(자료 구조를 사용하는) 절차적인 코드는 기존 자료 구조를 변경하지 않으면서 새 함수를 추가하기 쉽다. 반면, 객체 지향 코드는 기존 함수를 변경하지 않으면서 새 클래스를 추가하기 쉽다."와 "절차적인 코드는 새로운 자료 구조를 추가하기 어렵다. 그러..
최댓값 구하기 SELECT DATETIME AS 시간 FROM ANIMAL_INS WHERE DATETIME = (SELECT MAX(DATETIME) FROM ANIMAL_INS) AS 컬럼명 : 출력 시에 컬럼명으로 변경 MAX( ) : 최대 최솟값 구하기 SELECT DATETIME AS 시간 FROM ANIMAL_INS WHERE DATETIME = (SELECT MIN(DATETIME) FROM ANIMAL_INS) 동물 수 구하기 SELECT COUNT(*) FROM ANIMAL_INS COUNT( ) : 개수 구하기 중복 제거하기 SELECT COUNT(DISTINCT(NAME)) FROM ANIMAL_INS WHERE NAME != 'NULL'; DISTINCT( ) : 중복 제거
프로그래머스 SQL High Score Kit 문제를 풀어보려고 한다. 이전에 몇 개를 풀기는 했었는데 기억이 나지 않으므로 다시 풀어야지..! 모든 레코드 조회하기 풀이 SELECT * FROM ANIMAL_INS * : 모든 정보 역순 정렬하기 SELECT NAME, DATETIME FROM ANIMAL_INS ORDER BY ANIMAL_ID DESC ORDER BY : 기준 DESC : 역순 / ASC : 기본(오름차순/작은것->큰것) 아픈 동물 찾기 SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE INTAKE_CONDITION = 'Sick' ORDER BY ANIMAL_ID WHERE : 조건 추가 주의) WHERE이 오고 나서 ORDER BY 사용 가능 어린 ..
DP 유형에 속하는 여러 문제들을 풀어보고자 해당 문제를 골랐다. N개의 집을 각각 빨강, 초록, 파랑 색으로 칠하는 비용이 각각 입력된다. 그런데 i번째 집은 i-1과 i+1번째에 해당하는 집들은 같은 색을 선택할 수 없다. 즉, 연속하는 2개의 집은 같은 색일 수 없다는 것이다. 1149번 RGB거리 풀이 [시도1] 맞았습니다!! with 솔루션 N = int(input()) color = [] for _ in range(N): rgb = list(map(int, input().split())) color.append(rgb) for i in range(1,N): color[i][0] = min(color[i-1][1], color[i-1][2]) + color[i][0] color[i][1] = m..
DP 유형에 속하는 여러 문제들을 풀어보고자 해당 문제를 골랐다. 필요하다고 생각하는 N개의 물건에는 각각 무게 W와 가치 V가 있고, 최대 K만큼의 무게까지만 배낭에 담을 수 있다. 최대한 즐거운 여행을 할 수 있도록 물건들의 가치의 최댓값을 찾아야 한다. 12865번 평범한 배낭 풀이 [시도1] 맞았습니다!! with 솔루션 N, K = map(int, input().split()) W = [0] V = [0] dp = [[0]*(K+1) for _ in range(N+1)] for _ in range(1, N+1): w, v = map(int, input().split()) W.append(w) V.append(v) for i in range(1, N+1): for j in range(1, K+1)..
보기 좋은 코드를 위해서는 형식을 깔끔하게 맞춰 코드를 짜야한다. 형식을 맞추는 목적 코드 형식은 중요하다! 작동하는 코드가 제일 중요한 것이라고 여길 수 있지만 코드 작성 스타일과 가독성 수준은 유지보수 용이성과 확장성에 계속 영향을 미치기 때문에 상당히 중요하다. 적절한 행 길이를 유지하라 여러 자바 코드 프로젝트들을 보았을 때 충분히 작은 파일로도 커다란 시스템을 구축할 수 있음을 알 수 있다. - 신문 기사처럼 작성하라 사람들이 신문을 읽을 때에 위에서 아래로 읽으며, 상단의 제목을 보고 기사를 읽을지 말지를 결정한다. 또한 신문은 여러 기사들로 이루어져 있고, 보통의 기사들의 길이는 짧다. 신문 기사들이 이러한 특징을 가지는 이유는 더 많은 사람들이 읽고 정보를 얻을 수 있도록 하는 목적이 있기..
잘 달린 주석은 유용하지만 사실 프로그래밍 언어를 사용해서 코드 설명을 잘할 수 있는 능력이 있다면, 주석은 필요하지 않다. "내가 이렇듯 주석을 무시하는 이유가 무엇이냐고? 거짓말을 하니까. 항상도 아니고 고의도 아니지만 너무 자주 거짓말을 하니까." 라고 표현할 정도로 저자는 주석은 불필요한 존재라 말한다. 그 이유는 코드는 계속 변화하는데, 주석은 오래될수록 코드에 대한 설명을 잘 해내지 못하며 프로그래머들이 이 주석들을 유지 보수하기는 어렵기 때문이다. 그리하여 저자는 주석이 필요 없도록 코드를 깔끔하게 정리하는 것에 에너지를 쏟겠다고 말한다. 부정확한 주석은 아예 없는 주석보다 훨씬 더 나쁘다. ˙˙˙ 진실은 한곳에만 존재한다. 바로 코드다. 주석은 나쁜 코드를 보완하지 못한다 일반적으로 주석을..