분류 전체보기 291

[알고리즘] 이진 탐색과 완전 탐색

이진 탐색이진 탐색 알고리즘이란?매 탐색마다 탐색 범위를 반으로 좁혀가며 빠르게 탐색하는 알고리즘 단, 리스트(배열)이 정렬되어 있어야 함한번 탐색을 수행할 때 마다, 탐색의 범위가 반으로 줄어들기 때문에 시간 복잡도는 O(logN)  동작 방식 1. 배열의 중간 값을 가져온다 2. 중간값과 검색값을 비교   2-1. 중간 값 == 검색 값          종료  2-2. 중간 값           중간 값 기준 배열의 오른쪽 구간을 대상으로 탐색  2-3. 중간 값 > 검색 값          중간 값 기준 배열의 왼쪽 구간을 대상으로 탐색 3. 값을 찾거나 간격이 비어있을 때까지 반복  이진 탐색의 장단점단점: 정렬된 리스트에서만 사용할 수 있다장점: 검색이 반복될 때마다 검색 범위가 절반으로 줄기 ..

[해시] 해시의 개념과 예상 면접 질문

해시(Hash)/해시 함수(Hash Function)/해싱(Hashing) 해시 (Hash) 데이터를 다루는 기법 중 하나 해시 함수 (Hash Function)데이터를 효율적으로 관리하기 위해서 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수ex) 나눗셉 법, 곱셈 법, SHA 해싱 (Hashing)키 -> 해시값(Hash value)로 매핑되는 과정 자체  Hash Table  장점배열의 인덱스를 사용해서 검색/삽입/삭제가 매우 빠름 O(1) - 충돌이 없다면key와 해시값(hash)가 연관성이 없어 보안에 좋음키에 대한 데이터가 있는지 (중복) 확인이 쉬움 단점 저장공간이 많이 필요한 편여러 키에 대해 주소가 동일한 경우(충돌)  별도의 자료구조가 필요하다충돌이 발생하면 Chaining..

[정렬] 정렬의 종류와 외워둘 사항들, 예상 면접 질문

정렬 알고리즘의 종류삽입, 선택, 버블, 합병, 기수, 퀵, 쉘, 힙 정렬 정렬 알고리즘의 시간 복잡도Big-O 시간복잡도O(1) > O(log n) > O(n) > O(n log n) > O(n2) > O(2n) > O(n!) 💡 시간 복잡도는 최악의 경우를 두고 생각한다​퀵정렬의 경우 예외적인 상황(이미 정렬이 돼있는 경우)을 제외하곤 평균적으로 빠른 속도를 보여주지만데이터의 크기가 커지거나 규모가 큰 프로젝트에서는 이러한 예외 상황을 그냥 지나치기 어렵기 때문에정렬 알고리즘을 사용할 때는 항상 최악의 시간복잡도를 고려해서 사용하는 것이 예외를 두지 않는 좋은 방법이라고 생각한다.​다만, 정렬되는 데이터의 크기가 항상 동일하거나 로직이 복잡하지 않은 소규모의 프로젝트에서 사용할 경우에는 본인에게 맞..

[구름 | Java Lv.2] 블록 게임 (자료구조)

문제https://level.goorm.io/exam/191052/%EB%B8%94%EB%A1%9D-%EA%B2%8C%EC%9E%84/quiz/1 구름LEVEL난이도별 다양한 문제를 해결함으로써 SW 역량을 향상시킬 수 있습니다.level.goorm.io첫번째 코드 - 실패package week7.baek.datastructure;import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.*;public class BlockGame {static Queue score;static List> map;arduino코드 복사public static void search(int x, int y, int s){ //들어갈 자..

[구름 | Java Lv.2] 0커플 (자료구조)

문제0커플 - 구름LEVEL (goorm.io) 구름LEVEL난이도별 다양한 문제를 해결함으로써 SW 역량을 향상시킬 수 있습니다.level.goorm.io 구름의 문제 난이도를 가늠 하지 못하겠어요... 최종코드package week7.baek.datastructure;import java.io.BufferedReader;import java.io.InputStreamReader;public class ZeroCouple { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String i..

[자료구조] 스택과 큐, 연결 리스트 - 개념과 예상 기술 면접 질문

🕵️‍♀️ 스택과 큐, 연결리스트  https://xoxoxoxox.tistory.com/250 자료구조(Data Structure)란자료구조란? 일상생활에서 우리는 사물들을 정리하는 여러 가지 방법을 이용한다. 마트 계산대에서는 줄을 이루어서 기다리기도 하고, 지도에서는 도시들을 연결한느 도로가 표시되어 있다. xoxoxoxox.tistory.com앞서 정리해던 자료구조에서 소개했던 데이터를 순서대로 정렬하는  선형 동적 자료구조에 속하는 스택과 큐 그리고 연결리스트에 대해 간단히 정리하고, 여기에서 출제될 수 있는 기술 면접 질문에 대해 포스팅하려고 한다.  👩‍💻 리스트 vs 스택 vs 큐 공통점차이점리스트(List)선형 자료 구조 (순서가 있음)읽기, 삽입, 삭제 연산이 리스트의 어느 곳에서..

[프로그래머스 | Java | 2024 KAKAO WINTER INTERNSHIP] 가장 많이 받은 선물

문제https://school.programmers.co.kr/learn/courses/30/lessons/258712 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr접근주어진 예시처럼 직관적으로 하나하나 구현하니까 성공했다!  최종 코드 package week7.baek.kakao2024winter;import java.util.Arrays;import java.util.Collections;import java.util.HashMap;public class Present { public static int solution(String[] friends..

[구름 | Java Lv.3] [현대모비스][예선] 주차시스템 (탐색)

문제https://level.goorm.io/exam/152115/%ED%98%84%EB%8C%80%EB%AA%A8%EB%B9%84%EC%8A%A4-%EC%98%88%EC%84%A0-%EC%A3%BC%EC%B0%A8%EC%8B%9C%EC%8A%A4%ED%85%9C/quiz/1 구름LEVEL난이도별 다양한 문제를 해결함으로써 SW 역량을 향상시킬 수 있습니다.level.goorm.io접근1이 아닌 구역들을 dfs로 구하고, 각 구역마다의 점수를 계산하면 되겠다. package week7.baek.search;import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.ArrayList;public class ParkingSy..

[구름 | Java Lv.3] 심리적 거리감 (탐색) - 미완성

문제https://level.goorm.io/exam/195775/%EC%8B%AC%EB%A6%AC%EC%A0%81-%EA%B1%B0%EB%A6%AC%EA%B0%90/quiz/1 구름LEVEL난이도별 다양한 문제를 해결함으로써 SW 역량을 향상시킬 수 있습니다.level.goorm.io 최종 코드 - 테스트케이스 다수 실패package week7.baek.search;import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.*;public class PsyDistance { static List> bridge; public static int[] bfs(int start, int n){ int[]..

카테고리 없음 2024.06.17

자료구조(Data Structure)란

자료구조란? 일상생활에서 우리는 사물들을 정리하는 여러 가지 방법을 이용한다. 마트 계산대에서는 줄을 이루어서 기다리기도 하고, 지도에서는 도시들을 연결한느 도로가 표시되어 있다. 사람들이 사물을 정리하여 저장하는 것과 마찬가지로 프로그램에서도 자료들을 정리하여 보관하는 다양한 구조가 있다. 이것을 우리는 자료구조(data structure)이라고 한다.   프로그램 = 자료구조 + 알고리즘 컴퓨터 프로그램은 뭐로 이루어져 있을까? 흔히 "프로그램 = 자료구조+알고리즘"이라고 한다. 프로그램은 자료(data)를 처리하고, 이 자료들은 자료구조에 저장된다. 또, 알고리즘으로 주어진 문제를 처리하는 절차가 필요하다. 효율적인 자료구조가 성능이 좋은 알고리즘을 만들기 때문에 효율적이고 성능 좋은 프로그램을 만..