분류 전체보기 34

AI 할루시네이션이란? 원인/ 예시/ 해결방법

챗GPT 등 생성형 AI가 틀린 정보를 맞는 정보인 것 처럼 답해서 답답하거나 혼란스러웠던 경험이 있으신가요? 한 사례에 따르면 "세종대왕 맥북 던짐 사건 알려줘" 라고 물었더니, 챗GPT가 엉뚱한 답변을 내놓은게 화제가 되기도 했습니다. 이러한 답변이 바로 대표적인 할루시네이션의 예시입니다.AI 할루시네이션이란?AI가 정보를 출력해내는 과정에서 발생하는 오류로, 의도적으로 생성되는 허위 정보를 마치 '사실'처럼 말하는 현상을 말합니다. 역사적 사실을 왜곡하거나, 가짜뉴스 생성, 이미지 생성 시 현실 법칙에 위배된 이미지 등을 제공하는 것이 예시입니다.개인적인 사용에서는 혼란에서 피해가 멈추지만, 의료·법률·금융·경제 분야 등 중요한 의사 결정에서 할루시네이션으로 부적절한 결정을 내릴 경우, 경제적 손실..

IT 용어 2025.04.22

수학과가 설명하는 플로이드-워셜(Floyd-Warshall) 알고리즘 [Java]

플로이드-워셜 알고리즘이란?모든 정점 쌍 간의 최단 거리를 구하는 알고리즘입니다.다익스트라는 한 정점에서 출발하는 최단거리만 구하지만, 플로이드-워셜은 모든 정점에서 모든 정점까지의 최단거리를 구합니다. 플로이드-워셜 과정i: 출발지, j: 도착지 라고 하자.i에서 j로 가는 최단 거리는, i → j와 i → k(경유지) → j 중 더 작은 값을 선택해 갱신합니다.(경유지가 0번인 경우, 1번인 경우 ...n-1번인 경우) 코드와 시간복잡도O(n^3)for문이 3개가 중첩이 되어 있기 때문에, 시간 복잡도가 굉장히 높습니다.public class Main { static final int INF = 99999999; // 이동 불가 (문제에 따라 다르게 설정) public static void main..

Java/Algorithm 2025.04.16

다익스트라 알고리즘 [Java]

다익스트라 알고리즘이란?그래프에서 하나의 정점에서 다른 모든 정점까지의 최단 경로를 구하는 알고리즘입니다.음의 가중치가 없는 그래프에만 사용 가능합니다. 다익스트라 과정1) 시작 노드의 거리를 0, 나머지는 무한대로 설정합니다. ex) k가 출발점이면, dist[k]=0 2) 방문하지 않은 정점 중, 출발지로부터 가장 거리가 짧은 정점을 방문합니다. 3) 해당 정점을 거쳐 연결된 다른 정점의 거리가 기존의 기록된 거리보다 작으면 갱신합니다. - 이 부분에서 음수 간선일 경우, 갱신이 반복되어 잘못된 최단 경로가 저장될 수 있어 오류가 생길 수 있습니다. 4) 모든 노드를 방문할 때까지 2-3단계를 반복합니다. 코드와 시간복잡도- 우선순위큐+ 인접리스트를 사용할 경우: O(E log V)인접리스트를 ..

Java/Algorithm 2025.04.08

[Java] HashSet 개념과 저장 원리(HashMap, 해시테이블, hashcode, equals 메서드)

HashSet 이란?Python에서 Set(집합)의 개념과 유사합니다.중복을 허용하지 않고, 요소들의 저장 순서를 유지하지 않는 자료구조입니다. HashSet 특징null값을 저장할 수 있습니다.동기화되지 않습니다 멀티스레드 환경에서 여러 스레드가 동시에 HashSet을 수정하면 ConcurrentModificationException이 발생할 수 있습니다. 따라서 스레드 중 하나 이상이 세트를 수정하는 경우 Collections.synchronizedSet() 을 사용해서, 외부에서 동기화 해야 합니다. 검색 시 O(1) 시간 복잡도가 소요되며 굉장히 성능이 좋습니다.  HashSet 저장 원리 HashSet의 검색 속도가 빠른 이유가 바로 저장 원리 때문입니다. Java에서 HashSet은 내부적으로..

Java/자료구조 2025.04.01

ArrayList vs LinkedList

구조적 차이 ArrayList의 구조 (배열 기반) 연속된 메모리 블록에 데이터를 저장인덱스로 직접 접근 가능 (O(1))중간 삽입/삭제 시 데이터를 이동해야 해서 비용이 큼 (O(N))배열은 연속된 메모리 공간에 데이터를 저장하므로, 특정 위치에 데이터를 삽입하거나 삭제하려면 해당 위치 이후의 모든 데이터를 이동시켜야 합니다. LinkedList의 구조 (이중 연결 리스트) 각 요소가 "노드"로 저장되며, 노드는 next와 prev 포인터를 가짐메모리가 연속적이지 않음 (임의의 위치에 저장됨)중간 삽입/삭제는 빠름 (O(1)) (포인터만 변경하면 됨)검색(get(index)) 시 처음부터 탐색해야 해서 느림 (O(N)) 시간복잡도 차이연산ArrayListLinkedList접근O(1)O(n)처음 위치에 ..

Java/자료구조 2025.03.30

백준 하노이탑 2270 Java (Gold 1)

문제 요약이 문제는 하노이탑 변형문제이다.기존의 하노이탑은 3번 막대기에 하노이탑을 쌓으면 된다.하지만 이 문제에선, 각 막대기에 디스크가 크기순대로 놓여져있는 상황에서 원하는 막대기에 최소비용으로 1-n 번 디스크를 놓으면 된다. 입력: n: 디스크 개수 (1 ≤ n ≤ 100,000) a, b, c: 차례로 1, 2, 3번 막대기에 꽂혀 있는 디스크의 개수 (0 ≤ a,b,c ≤ n ) 3줄에 걸쳐서, 각 막대기에 꽂혀있는 디스크들의 번호가 주어진다. 출력: 첫째 줄에 모아야 하는 막대기의 번호(1, 2, 3 중 하나)을 return한다. 최소의 이동 횟수를 1,000,000으로 나눈 나머지를 return한다 접근 방식n=4 라고..

Java/Algorithm 2025.03.24

양자컴퓨팅 / 큐비트/ 양자 게이트

양자 컴퓨팅이란?양자 컴퓨팅은 양자 역학을 활용하는 컴퓨터 하드웨어 및 알고리즘을 비롯한 특수 기술을 사용하여 기존 컴퓨터나 슈퍼컴퓨터가 해결할 수 없거나 충분히 빠르게 해결할 수 없는 복잡한 문제를 해결합니다. 기존 컴퓨터가 0과 1의 이진법(bit)을 사용하는 반면, 양자컴퓨터는 큐비트(Qubit)를 활용하여 동시에 여러 상태를 표현하고 연산할 수 있습니다.  구글은 2019년 '양자 우위'를 선언하며 양자 컴퓨팅 기술 분야를 선도하고 있습니다. 양자우위 증명을 위해 구글 연구팀은 양자 컴퓨터와 슈퍼컴퓨터를 대상으로 무작위 양자 알고리즘을 실행하고 그 값을 얻는 과정을 추적했으며, 슈퍼컴퓨터가 양자 알고리즘을 직접 수행할 수는 없기에 슈퍼컴퓨터는 시뮬레이션을 통해 주어진 양자 알고리즘을 풀도록 했습니..

IT 용어 2025.03.21

백준 다리 만들기 2 17472 Java (Gold 1)

문제 요약NxM 지도는 땅과 바다로 이루어져 있다. 이때 땅은 섬으로, 이 섬들을 다리로 연결해야한다. 다리는 최소 길이(격자에서 차지하는 칸의 수) 가 2여야하며, 바다에만 건설이 가능하다.다리의 양 끝은 섬과 인접한 바다에 있어야한다.아래 그림에서 B는 다리가 맞지만 A는 올바른 다리가 아니다.방향은 중간에 꺾일수가 없다. 즉 가로 다리와 세로 다리만 존재한다.다리는 교차로 설치가 가능하다.  입력:첫째 줄에 지도의 세로 크기 N과 가로 크기 M이 주어진다. 1 ≤ N, M ≤ 103 ≤ N×M ≤ 100둘째 줄부터 N개의 줄에 지도의 정보가 주어진다. 각 줄은 M개의 수로 이루어져 있으며, 수는 0 또는 1이다. 0은 바다, 1은 땅을 의미한다.2 ≤ 섬의 개수 ≤ 6출력:다리 길이의 최솟값을 re..

Java/Algorithm 2025.03.21

테스트코드 개념/ 종류/ 장점/ 주의사항/ TDD

테스트 코드란?테스트 코드(Test Code)는 개발한 소프트웨어가 예상대로 동작하는지 자동으로 검증하는 코드입니다.일반적으로 단위 테스트(Unit Test), 통합 테스트(Integration Test), 기능 테스트 (Functional Test, End-to-End Test, E2E)등의 형태로 작성됩니다.1. 단위 테스트 (Unit Test)✔️ 정의:프로그램의 개별 단위(함수, 메서드, 클래스)가 정상적으로 동작하는지 검증하는 테스트보통 Mock 객체를 활용하여 다른 의존성을 제거하고 해당 단위만 테스트✔️ 특징:빠르고 독립적 (테스트 실행 속도가 빠름)데이터베이스, 네트워크 같은 외부 의존성 없이 실행 (Mocking 활용)버그를 조기에 발견할 수 있음자바에서는 JUnit 프레임워크를 통해 단..

Java/CS 2025.03.20

선형대수학과 데이터 분석(Data Analysis) : 데이터 구조와 ML을 기반으로

수학을 전공하며, 선형대수학을 기반으로 데이터의 구조와 모델의 작동 원리를 수학적으로 이해하는 역량을 기를 수 있었습니다.이번 포스팅에서는 선형대수학과 데이터 분석이 어떠한 관련이 있는지 얘기해보려고 합니다. 선형대수학이란?선형대수학은 벡터, 행렬, 선형변환 등을 연구하는 대수학의 한 분야를 말합니다. 데이터의 구조 분석데이터는 벡터 및 행렬 형태로 표현될 수 있습니다. 예를 들어 머신러닝에서 각 샘플(데이터 포인트)은 벡터로 표현되며, 전체 데이터셋은 행렬(특성 행렬, feature matrix)로 나타납니다. 예를 들어, 학생들의 수학 점수를 저장하는 데이터가 있다고 해보겠습니다.학생시험1시험2시험3a908588b758070c889295이 데이터를 행렬로 표현하면 다음과 같이 표현할 수 있습니다.이런..

BigData 2025.03.13