전체 글 233

해시 데이터 구조 - 해시, 해시 함수, 해시 테이블

해시와 해시 함수해시는 어떤 길이의 임의 데이터를 고정 길이의 데이터로 매핑하는 것이다해시 함수는 이 해시를 실행하려고 하나의 값을 다른 값으로 변환하는 함수다해시 함수의 동작해시 함수는 데이터를 입력하면 해시값을 출력한다해시 함수의 특징은 입력되는 데이터가 문자든 문자열이든 기호든 출력되는 해시값의 길이가 항상 고정된다해시 함수는 서로 다른 입력 2개가 같은 해시값을 생성할 가능성도 있다이때 해시 충돌이 발생한다해시 함수가 잘 정의되었으면 내부 연산이 빠르고 충돌 발생이 적다해시 테이블해시 테이블은 해싱(해시 테이블을 이용하는 탐색)할 때 사용한다해시 테이블은 키와 값으로 구성된 검색 시스템이다해시 테이블에는 모든 키에 대응하는 값이 있다이러한 데이터 구성은 검색 수행 속도를 크게 증가시킨다보통 문자열..

알고리즘 2024.09.16

BOJ 2206 - 벽 부수고 이동하기

문제https://www.acmicpc.net/problem/2206  풀이BFS를 응용해서 문제를 해결한다어떤 칸에 도달했을 때, 벽을 부수거나 부수지 않거나 두 가지의 상태가 있다이것을 다음처럼 표현한다visited[y][x][벽을 부숨, 벽을 부수지 않음]visited[y][x][0]=0 # 벽을 부수지 않은 상태, 해당 위치를 방문하지 않은 상태visited[y][x][0]=1 # 벽을 부수지 않은 상태, 해당 위치를 방문한 상태visited[y][x][1]=0 # 벽을 부순 상태, 해당 위치를 방문하지 않은 상태visited[y][x][1]=1 # 벽을 부순 상태, 해당 위치를 방문한 상태 또한 최단 거리를 저장하기 위해 visited[y][x][?] 에는 이전 칸에 값 + 1을 해준다visit..

BOJ/미해결 2024.09.16

BOJ 2178 - 미로 탐색

문제 https://www.acmicpc.net/problem/2178 2178번: 미로 탐색첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다.www.acmicpc.net  풀이 bfs 탐색을 (1,1)에서 시작해서 (N,M)에 도착했을 때 지나가는 level의 수가 최소 횟수가 된다.result = (1,1)에서 (N,M)까지 이동할 때 지나야하는 최소 칸 수 라고 할 때,bfs 탐색을 진행하면서 현재 level에 해당되는 좌표들을 모두 방문한 후에 result 값을 증가시켜주면 된다. 현재 level에 해당하는 좌표를 모두 방문하려면, bfs 탐색에서 현재 큐에 저장되어 있는 데이터 수 만큼..

BOJ 2024.09.15

BOJ 14888 - 연산자 끼워넣기

문제https://www.acmicpc.net/problem/14888  풀이백트래킹을 이용해 문제를 해결한다 백트래킹의 핵심 코드는 다음과 같다operator[i] -= 1backtracking(index + 1, sum)operator[i] += 1sum = temp해당 연산자는 사용했으므로 operator[i] -= 1을 해준다operator[i] == 0 이라면 연산자를 모두 사용했다는 뜻이다 이후 연산자를 1개 사용한 채로 backtracking(index + 1, sum)을 실행한다이는 다음 인덱스와 지금까지 계산한 결과값을 넘겨준다 다음으로 operator[i] += 1을 다시 해준다백트래킹 이전으로 연산자를 다시 선택하지 않은 상태로 만든다 마지막으로 sum 값을 다시 원래 값인 temp로..

BOJ/미해결 2024.09.14

2024 예스드림뮤직콘서트 (예스콘) 장소 일정 라인업 셔틀버스

추석 명절을 맞아 9월 14일 예산종합운동장 주경기장에서 2024 예산군 예스 드림 뮤직콘서트(YES CON)3을 개최합니다 1부에는 이윤아 등 지역 가수와 아이돌 원츄, 예산군청소년동아리연합회 유니크의 공연이 진행되며2부에는 투어스, 정수라, 린 등 정상급 가수들이 출연합니다   목차예스드림뮤직콘서트 일정예스드림뮤직콘서트 1부/2부 라인업 안내예스드림뮤직콘서트 셔틀버스 운영계획 알림예스드림콘서트 자주묻는 질문/답변예산종합운동장 길찾기예스드림뮤직콘서트 일정일시: 2024년 9월 14일 토요일시간: 14:30 부터 선착순 무료 입장 (1부 15:30 / 2부 18:00)장소: 예산종합운동장 주경기장   예스드림뮤직콘서트 라인업예스드림뮤직콘서트 1부/2부 라인업은 다음과 같습니다   예스드림뮤직콘서트 셔틀버..

카테고리 없음 2024.09.13

BOJ 15649 - N과 M (1)

문제https://www.acmicpc.net/problem/15649  풀이N과 M(3) 문제와는 달리 같은 숫자를 여러 번 사용할 수 없도록 조건식을 추가해야 한다  코드python123456789101112131415161718def backtracking(depth):    if depth == m:        print(*answer)        return    for i in range(1, n + 1):        if i in answer:            continue        answer.append(i)        backtracking(depth + 1)        answer.pop()  answer = [] n, m = map(int, input().split..

BOJ 2024.09.12

바이트 단위 입출력 스트림

InputStream바이트 단위 입력 스트림의 최상위 추상 클래스다많은 추상 메서드가 선언되어 있고 이를 하위 스트림이 상속받아 구현한다주요 하위 클래스는 다음과 같다스트림 클래스설명FileInputStream파일에서 바이트 단위로 자료를 읽는다ByteArrayInputStreambyte 배열 메모리에서 바이트 단위로 자료를 읽는다FilterInputStream기반 스트림에서 자료를 읽을 때 추가 기능을 제공하는 보조 스트림의 상위 클래스주요 메소드는 다음과 같다메서드설명int read()입력 스트림으로부터 한 바이트의 자료를 읽는다. 읽은 자료의 바이트 수를 반환한다int read(byte b[])입력 스트림으로 부터 b[] 크기의 자료를 b[]에 읽는다. 읽은 자료의 바이트 수를 반환한다int rea..

Java 2024.09.12

BOJ 15651 - N과 M (3)

문제https://www.acmicpc.net/problem/15651  풀이다음 순서로 문제를 해결한다 1. 만들 수 있는 모든 수열을 구해야 하므로, 완전 탐색을 이용한다2. 수열의 길이는 m이고 중복되지 않게 오름차순으로 출력한다 재귀함수를 이용해 백트래킹 알고리즘으로 문제를 해결한다  코드python12345678910111213141516def backtracking(depth):    if depth == m:        print(*answer)        return    for i in range(1, n + 1):        answer.append(i)        backtracking(depth + 1)        answer.pop()  answer = [] n, m = ..

BOJ 2024.09.11

트리 데이터 구조 - 트리, 이진 트리, AVL 트리, RB 트리, B 트리, 힙

트리트리 데이터 구조는 데이터를 계층으로 정렬한다컴퓨터 과학 분야에서 트리는 뒤집혀서 맨 위에 뿌리가 있는 나무처럼 보인다맨 위에 해당하는 노드를 루트 노드라고 한다트리의 나머지 요소는 루트 노드를 기준으로 구성한다루트 노드에서 멀어지는 방향으로 다른 노드가 연결되면, 그 노드를 하위 노드 또는 자식 노드라고 한다루트 노드를 향하는 방향으로 다른 노드가 연결 되면, 그 노드를 상위 노드 또는 부모 노드라고 한다리프 노드는 더 이상 자식 노드를 갖지 않는 트리의 마지막 노드다트리에서 노드를 연결하는 선을 에지라고 한다노드 하나와 그 자식 노드들로 구성된 트리를 서브트리라고 한다노드에는 데이터를 저장하며, 저장된 데이터를 식별하는 데 사용되는 키와 저장된 데이터인 값을 포함할 수 있다이진 트리(Binary ..

알고리즘 2024.09.09