[Algorithm] 에라토스테네스의 체
알고리즘/알고리즘 정리2024. 3. 11. 12:48[Algorithm] 에라토스테네스의 체

알고리즘에 대한 이해 !에라토스테네스의 체란 소수를 판별하는 알고리즘입니다 !소수를 대량으로 빠르고 정확하게 구하는 방법입니다.소수란 무엇인가 ?소수는 양의 약수를 두 개만 가지는 자연수, 즉 1과 자기자신으로만 나누어지는 수를 의미합니다.2, 3, 5, 7, 11 ...등이 있죠 !반복문을 통해 소수를 구하는 법을 먼저 확인하겠습니다 !private boolean isPrimeNumber(int targetNumber) { for(int i = 2 ; i 위와 같이 알고리즘을 작성하는 경우 소수 판별 알고리즘의 시간 복잡도는 O(N)입니다.즉 ! 모든 경우의 수를 다 확인하여 약수 여부를 확인한다는 점에서 몹시 비효율적이라고 볼 수 있죠 !에라토스테네스의 체 구현방법 !O(N)의 시간 복잡도를..

[Java, 자바] 프로그래머스 귤 고르기
알고리즘/프로그래머스2024. 3. 6. 19:05[Java, 자바] 프로그래머스 귤 고르기

프로그래머스 👉🏻 https://school.programmers.co.kr/learn/courses/30/lessons/138476 # 난이도 : LV.2 문제내용 제한사항 입출력 예 풀이방법 이번 문제는 우선순위 큐와 Map을 통해서 해결하였습니다 :) Map을 통해 형식으로 데이터를 넣어줍니다. (다른 문제에서 언급했던 getOrDefault 메서드 사용하기 ! ⭐️잊지마세요) 종류의 수만 구하면 되는 문제이기 때문에 내림차순으로 생성해 놓았던 우선순위 큐에 Map에 누적해 놓은 누적 개수를 모두 저장해줍니다 ! 마지막으로 반복문은 k가 0보다 클 때만 실행되고 반복문 안에서 Q에 들어있는 값을 확인한 뒤 k보다 큰 수일 경우 answer을 증가하여 반복문을 탈출해주고 Q의 값이 k보다 작을 경우 ..

[Java, 자바] 프로그래머스 게임 맵 최단거리(BFS)
알고리즘/프로그래머스2024. 3. 6. 14:06[Java, 자바] 프로그래머스 게임 맵 최단거리(BFS)

프로그래머스 👉🏻 https://school.programmers.co.kr/learn/courses/30/lessons/1844 # 난이도 : LV.2 문제내용 제한사항 입출력 예 풀이방법 좌표를 저장할 Point 클래스를 생성한 뒤 BFS메서드와 Queue를 통해 문제를 해결하였습니다 ! 상하좌우 탐색이 이루어져야 하기 때문에 dx, dy 변수를 생성하여 현재의 위치에서 상하좌우 탐색을 진행하였습니다. 중요한 포인트는 기존에 탐색이 이루어진 부분은 1로 초기화를 해줘야 된다는 점 ! (무한루프가 돌 수 있습니당) 탐색은 최단거리로 진행되어야 하며, 도착지점에 값이 제일 빨리 도착하는 수로 초기화되고 최단거리가 아닌 경우의 수가 도착지점에 도착할 경우 탐색이 이루어진 부분은 1로 초기화를 하였기 때문에..

[Algorithm] 깊이 우선 탐색(DFS, 그래프 탐색) 알고리즘
알고리즘/알고리즘 정리2024. 3. 6. 01:10[Algorithm] 깊이 우선 탐색(DFS, 그래프 탐색) 알고리즘

알고리즘에 대한 이해 ! 알고리즘 문제 풀이에서 DFS, BFS를 많이 사용했었는데 이제야 알고리즘 정리를 하게됬네요 ! 깊이 우선 탐색(DFS)란 DFS(Depth-First Search)는 그래프의 시작 노드에서 자식의 노드들을 순서대로 탐색하면서 깊이를 우선으로 탐색하는 알고리즘 입니다 ! DFS는 주로 반복문을 활용하거나 재귀문을 통하여 구현합니다. DFS의 탐색 과정 DFS의 기본 탐색 과정은 특정 정점에서 시작하여 역추적(backtracking) 하기 전에 각 분기를 따라 가능한 한 멀리 탐색하는 것입니다. 탐색하는 과정은 다음과 같습니다 ! 현재 노드를 방문한 것으로 표시한다. 방문한 표시가 되어 있지 않은 각각의 인접한 정점을 탐색한다. 더 이상 방문하지 않은 정점이 없으면 이전 정점으로 ..

[Java, 자바] 백준 14425번, 문자열 집합
알고리즘/백준2024. 3. 4. 13:53[Java, 자바] 백준 14425번, 문자열 집합

백준 14425번 👉🏻 https://www.acmicpc.net/problem/14425 # 난이도 : 실버4 문제내용 총 N개의 문자열로 이루어진 집합 S가 주어진다. 입력으로 주어지는 M개의 문자열 중에서 집합 S에 포함되어 있는 것이 총 몇 개인지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 문자열의 개수 N과 M (1 ≤ N ≤ 10,000, 1 ≤ M ≤ 10,000)이 주어진다. 다음 N개의 줄에는 집합 S에 포함되어 있는 문자열들이 주어진다. 다음 M개의 줄에는 검사해야 하는 문자열들이 주어진다. 입력으로 주어지는 문자열은 알파벳 소문자로만 이루어져 있으며, 길이는 500을 넘지 않는다. 집합 S에 같은 문자열이 여러 번 주어지는 경우는 없다. 출력 첫째 줄에 M개의 문자열 중에 총 몇 ..

[CS] 데이터 모델링이란 ?
IT이론/데이터베이스2024. 3. 1. 18:02[CS] 데이터 모델링이란 ?

요약 비즈니스 프로세스와 데이터 요구사항을 추상적이고 구조화된 형태로 표현하는 과정 ! 데이터 모델링이란 ? 데이터 모델링이란 주어진 개념으로부터 논리적인데이터 모델을 구성하는 작업을 말합니다. 즉, 현실의 개념들을 체계적으로 수집하여 정보모델링을 통해 사용자의 정보요구사항을 조사하고 이를 개체, 관계, 속성을 중심으로 명확하게 체계적으로 표현하고 문서화하는 기법을 데이터 모델링이라고 합니다. 데이터 모델링의 3단계 1. 개념적 모델링 개념적 모델링은 내가 하고자 하는 일의 데이터 간의 관계를 구상하는 단계입니다. 각 개체들과 그들간의 관계를 발견하고 표현하기 위해 ERD 다이어그램을 생성합니다. 3가지의 단계중 추상화의 수준이 가장 높고 핵심 엔티티(Entity)를 추출하는 단계입니다. 2. 논리적 모..

[CS] DataBase 정규화(Normaliztion)란 ?
IT이론/데이터베이스2024. 2. 29. 16:46[CS] DataBase 정규화(Normaliztion)란 ?

요약 정규화란 Entity(테이블)를 분해하는 과정이다 ! 정규화의 개념 하나에 테이블에 많은 속성을 넣게 되면, 해당 테이블를 조회할 때 마다 많은 양의 데이터가 조회될 것이므로 최소한의 데이터만을 하나의 테이블에 넣는식으로 테이블을 분해하는 과정을 정규화라고합니다. 데이터의 일관성, 최소한의 데이터 중복, 최대한의 데이터 유연성을 위한 과정이라고 볼 수 있습니다. 데이터의 중복을 제거하고 데이터 모델의 독립성을 확보하는 과정입니다. 데이터 이상현상을 줄이기 위한 데이터 베이스 설계 기법입니다. 제1 정규화부터 제5 정규화까지 존재하지만 실질적으로는 제3 정규화까지만 수행됩니다. 정규화의 단계 [ 제1 정규화(1NF) ] 제1 정규화란 테이블의 컴럼이 원자값(Atomic Value, 하나의 값)을 갖도..

[CS] 유닉스(UNIX)란 무엇인가 ?
IT이론/네트워크2024. 2. 16. 15:40[CS] 유닉스(UNIX)란 무엇인가 ?

요약UNIX는 1960년 AT&T 벨(Bell) 연구소에서 개발된 대화식 운영체제이다.UNIX의 특징시분할 시스템(Time Sharing System)을 위해 설계된 대화식 운영체제로, 소스가 공개된 개방형 시스템(Open System)이다.대부분 C언어로 작성되어 있어 이식성이 높으며 장치, 프로세스 간의 호환성이 높다.다중 사용자(Multi-User), 다중 작업(Multi-Tasking)을 지원한다.많은 네트워킹 기능을 제공하므로 통신망(Network) 관리용 운영체제로 적합하다.트리구조의 파일 시스템을 갖는다.UNIX 시스템의 구성UNIX의 구조는 아래 이미지와 같이 커널, 쉘, 유틸리티 및 응용프로그램으로 나누어집니다.커널(Kernel) UNIX 시스템이 부팅될 때 가장 먼저 읽히는 운영체제의 ..

image