[Algorithm] 백준_토마토_7569번 (JAVA) 🍅
·
Algorithm
📝문제https://www.acmicpc.net/problem/7569토마토 7569티어 : Gold 5 💡풀이문제 유형너비우선 탐색 걸린시간거의 60분 시간 복잡도O(H×N×M) 풀이 방법 도출처음에 dfs로 접근하다가 최솟값 구하는 문제라 bfs로 방향을 틀었다. dfs로 30분 날린듯tomato = new int[H][N][M]; 토마토가 들어있는 3차원 배열을 선언하고 입력값을 차례대로 넣어주었다.이때 모든 토마토가 익어있는 상황을 확인하기 위해 boolean completed = true; 변수를 활용하였다. 0을 반견하면 false로 바꿔주고 completed = true면 조기 종료 해주었다.이후 익은 토마토를 발견하면 토마토의 위치와 day를 큐에 넣어준다.bfs 함수를 선언하여 익은 ..
[CS] 데이터 베이스_이상현상, 정규화
·
CS/데이터베이스
1️⃣ 이상 현상(삽입 이상, 갱신 이상, 삭제 이상)🚀삽입 이상(Insertion anomalies)1. 중복 데이터 발생empl_idempl_namedept_iddept_namedept_leader_id1WINTER1001DEV12KARINA1001DEV1 dept와 관련된 데이터가 중복으로 들어가기 때문에데이터 중복으로 인한 저장 공간이 낭비되고dept_name은 고유한 값인데 실수로 DEB가 들어간다면 데이터 불일치가 생긴다.2. null 값을 많이 쓰게 되는 문제아직 부서 배치를 받지 않은 사원이라면empl_idempl_namedept_iddept_namedept_leader_id1WINTER1001DEV12KARINA1001DEV13WONYOUNGnullnullnull부서 정보에 null이 ..
[CS] 데이터베이스_인덱스
·
CS/데이터베이스
1️⃣  인덱스의 개념과 설정 기준 이해인덱스를 쓰는 이유?조건을 만족하는 튜플(들)을 빠르게 조회하기 위해빠르게 정렬하거나 그룹핑 하기 위해PLAYER 테이블idnameteam_idbacknumber............ 테이블 생성 후 인덱스 걸기CREATE INDEX player_name_idx ON player (name);name 어트리뷰트에 인덱스 걸기 CREATE UNIQUE INDEX team_id_backnumber_idx On player(team_id, backnumber); 테이블 생성 시 인덱스 걸기CREATE TABLE player (id INT PRIMARY KEY,name VARCHAR(20) NOT NULL,team_id INT,backnumber INT,INDEX play..
[Algorithm] 백준_대회 or 인턴_2875번 (JAVA)
·
Algorithm
📝문제https://www.acmicpc.net/problem/2875 💡풀이며칠 전에 풀려고 시도했다가 아이디어가 안 떠올라 포기했던 문제를 다시 도전해보았다.내 아이디어는 다음과 같다. 1)대회에 나가는 여학생을 변수 a로,대회에 나가는 남학생을 변수 b로 잡는다. 2)전체 여학생 인원이 N이고전체 남학생 인원이 M이므로(N-a)+(M-b) 는 인턴을 나가는 학생 수보다 같거나 커야한다. 3) 만약 N-a가 2보다 크거나 같고 M-b가 1보다 크거나 같으면 대회에 나가는 학생의 수를 추가해줄 수 있다.a = a + 2b = b + 1 4) 3번의 조건식에 맞지않는다면 대회에 나가려는 학생에 비해 나갈 수 있는 학생이 적기 때문에 팀을 꾸릴 수 없으므로 반복문을 빠져나온다. 전체풀이import ja..
[CS] 데이터베이스_SQL
·
CS/데이터베이스
📌SQL의 정의와 기본 구문 이해(DDL/DML/DCL)SQL(Structured Query Language)은 관계형 데이터베이스(RDBMS)에서 데이터를 관리하고 조작하기 위한 언어이다.SQL은 다음과 같이 세 가지 주요 범주로 나뉜다.1️⃣ DDL (Data Definition Language, 데이터 정의어)데이터베이스 구조(스키마, 테이블, 인덱스 등)를 정의하고 변경하는 명령어주요 명령어:CREATE : 데이터베이스 객체(테이블, 인덱스 등) 생성ALTER : 기존 객체의 구조 변경DROP : 객체 삭제TRUNCATE : 테이블의 모든 데이터를 삭제(구조는 유지)-- 데이터베이스 생성CREATE DATABASE my_database;-- 테이블 생성CREATE TABLE users ( id ..
[Algorithm] 백준_트리의 지름_1167번 (JAVA)
·
Algorithm
📝문제 💡풀이예제의 입력을 그림으로 표현하면 아래와 같다.각 정점에 대해 가장 긴 거리 경로를 구하면1-3-4-5 :112-4-3-1 :93-4-5 :94-5 :6 5-4-3-1 :11 위 결과의 공통 점은 1또는 5가 경로에 포함 된다는 것이다.트리의 지름은 1에서 5의 거리인데 어떤 정점에서 구해도 1또는 5를 포함해야 가장 긴 경로가 나온다. 이러한 결과로 이 문제의 아이디어는 다음과 같이 구할 수 있다.1. 임의의 정점에서 가장 긴 거리의 정점을 찾는다. 2. 1에서 찾은 정점을 기준으로 한번 더 가장 긴 거리의 정점을 찾는다. dfs를 두번 호출하여 정답을 구할 수 있다. 전체풀이import java.util.*;import java.io.*;class Main{ static boole..
[Algorithm] 백준_다리 만들기_2164번 (JAVA)
·
Algorithm
https://www.acmicpc.net/problem/2146이 문제는 차근차근 풀어가면 엄청 어렵진않다 중간에 실수만 안 하면 ..?조건이 많아 다소 복잡해보일뿐 알고리즘 자체는 어렵지않다,, 1) 섬을 구분해준다. 섬 구분은 dfs로 구현하였다.입력값이 아래와 같을 때 서로 다른 섬을 숫자로 구분해주었다. 2) 해안선의 위치를 큐에 넣어준다.이 문제는 해안선으로 시작해 다른 육지까지의 최소 거리를 구하는 것이므로해안선을 찾아줘야한다. (상하좌우에 0이 있는지 확인)if(!isCoastLine && island[nx][ny] == 0){ //해안선 위치를 큐에 넣음 isCoastLine = true; coastline.add(new int[] {n,m});} 3) 찾은 해안선들을 기준으로..
99클럽 코테 스터디 5기 후기🚀
·
후기
1. 참여 계기개발자 취준생이라면 필수 과제인 알고리즘 공부를 혼자 하기엔 의욕이 안 생기고 매일 어떤 문제를 풀어야 될지 고민이 됐습니다. 그러던 중 백준 사이트에서 광고 중인 99 클럽 코테 스터디를 알게 되었고 해당 과정은 30,000원이라는 참가비가 필요하지만 열심히 참여한다면 보상이 오는 페이백 방식이 맘에 들었습니다.😋 2. 참여 경험한 달간 평일 11시에 문제가 나오고 해당 문제를 풀고 난 후 인증샷과 TIL을 제출하면 되는 방식입니다.매주 월요일마다 특강이 있어 해당 특강 출석 인증을 하면 혜택이 있으니 출석 인증은 챙겨야 합니다!1) 문제 풀이 후 인증, 2) til 제출, 3) 특강 출석 인증을 성실히 한다면 30,000원 네이버 페이 혜택도 있어서 확실한 동기부여가 되었습니다. 💚..
[CS] 데이터베이스란?
·
CS/데이터베이스
📌파일 시스템과 데이터 베이스1. 파일 시스템운영체제가 파일을 저장하고 관리하는 기본적인 시스템데이터를 개별적인 파일로 저장하며, 디렉터리를 통해 파일을 조직단순한 데이터 저장 구조로 빠른 접근이 가능하지만, 데이터 중복 및 무결성 유지가 어렵다2. 데이터베이스체계적으로 데이터를 저장하고 관리하는 시스템데이터를 구조적으로 저장하며, 관계형 모델(RDBMS)이나 NoSQL 등의 방식이 있다트랜잭션 관리, 동시성 제어, 데이터 무결성 보장 들의 기능을 제공SQL과 같은 질의 언어를 이용하여 데이터를 효율적으로 접근하고 관리한다.파일 시스템은 단순한 데이터 저장이 필요할 때 유용하지만, 데이터 간의 관계, 검색, 보안, 동시성 처리가 필요하면 데이터베이스를 사용하는 것이 적합한다.파일 시스템에 이미지를 저장..
[Algorithm] 99클럽 코테 스터디 25일차 TIL | 백준_무한 수열(1351번)
·
Algorithm
📝문제 💡풀이N의 크기가 10¹² 까지 허용된다는 점이 이 문제의 킥이다.처음엔 반복문으로 풀어 메모리 초과가 났었다. 재귀문을 사용하여 풀면 기존 O(N)에서 O(logN)으로 시간복잡도를 향상시킬 수 있다. solve(7)solve(7/2=3)+solve(7/3=2)solve(3/2=1)+solve(3/3=1)+solve(2/2=1)+solve(2/3=0)solve(1/2=0)+solve(1/3=0)+solve(1/2=0)+solve(1/3=0)+solve(1/2=0)+solve(1/3=0)+solve(0) 위와 같이 한 번의 호출에서 최대 두 번의 호출이 발생하고 solve(0)을 만나면 1을 반환해주는 방식을 사용한다. 전체 풀이import java.util.*;import java.io.*;..