[알고리즘] 빅오 표기법(Big-O notation) 이해하기
·
Computer Science/Algorithm
알고리즘 알고리즘의 효율성을 판단하는 기준은 다음과 같다. 시간 복잡도(time complexity) : 얼마나 빠르게 결과를 출력하는가? (연산을 할 때 거치는 단계의 수) 공간 복잡도(space complexity) : 메모리를 얼마나 사용하는가? 효율성을 판단하는 표기법은 총 세 가지이다. 1. 빅오 표기법 "이것보단 더 나쁠 순 없어"와 같이 최악일 때의 성능을 판단해서 평균과 가까운 성능으로 예측한다. (상한) 2. 빅오메가 표기법 "이것보단 더 좋을 순 없어"와 같이 최상일 때의 성능을 판단해서 예측한다. (하한) 3. 빅세타 표기법 평균적인 성능을 판단한다. 왜 Big-O 표기법을 사용할까? 시간 복잡도를 읽기 쉽고 빠르게 파악할 수 있게 해주기 때문이다. 어떤 알고리즘을 선택해야 할 때 알..
[백준] 2839 - 설탕 배달 (Java)
·
Computer Science/Algorithm
[백준] 2839번 : 설탕 배달 - JAVA [자바] https://www.acmicpc.net/problem/2839 2839번: 설탕 배달 문제 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만 st-lab.tistory.com *해당 포스팅은 상단에 링크된 포스팅을 바탕으로 개인 공부 목적을 위해 작성되었으므로 자세한 내용은 위 링크를 확인해 주시기 바랍니다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String..
[백준] 2869 - 달팽이는 올라가고 싶다 (Java)
·
Computer Science/Algorithm
[백준] 2869번 : 달팽이는 올라가고 싶다 - JAVA [자바] https://www.acmicpc.net/problem/2869 2869번: 달팽이는 올라가고 싶다 문제 땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다. 달팽이는 낮에 A미터 올라갈 수 있다. 하지만, st-lab.tistory.com import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new..
[백준] 1193번 - 분수찾기 (Java)
·
Computer Science/Algorithm
참고 코드 백준 1193번 java 자바 분수찾기 [수학1] 하이고... 백준 문제 정주행 좀 꾸준히 하고 싶었는데 요새 너무 정신없이 살다보니 너무 오랜만에 작성하게 되었다. 사람이 이렇게까지 게을러지는구나 느끼고 있는 요즘이다. 아무튼 본론으로 hellodoor.tistory.com 우선 대각선 행마다 칸의 갯수가 있다는 것과, 각 행마다 대각선이 아래로 향하고 있는지 위로 향하고 있는지를 파악해야 한다. 세 번째 대각선 행을 보면 홀수 행이고 대각선 위 방향으로 진행이기 때문에 3/1 -> 2/2 -> 1/3 이 된다. 분자는 3에서 1로 감소 되고 분모는 1에서 3으로 증가하는 걸 알 수 있다. import java.io.BufferedReader; import java.io.IOException..
[자료구조] Queue 개념과 Java 구현
·
Computer Science/Data Structure
Queue란? 스택과 마찬가지로 메모리 안 데이터들을 더욱 효율적으로 다루기 위해 만들어진 데이터 참조 방식으로 스택과는 반대로 가장 먼저 들어온 데이터가 먼저 나가는 구조(FIFO, First In First Out)를 가진 자료구조이다. 버스 정류장에서 버스를 타기 위해 줄을 서면 먼저 온 사람이 먼저 버스를 타는 과정을 생각하면 된다. 큐의 예로는 이메일 전달 혹은 푸쉬 알림 기능 그리고 전화 온 순서대로 상담을 처리하는 콜센터를 생각할 수 있다. Java에서 제공하고 있는 Queue는 인터페이스이고 Queue interface를 구현하는 라이브러리는 크게 ArrayDeque, LinkedList, PriorityQueue가 있다. 보통은 자바에서 다음과 같이 사용한다. Queue q = new L..
[자료구조] Stack 개념과 Java 구현 & 사용법 예제
·
Computer Science/Data Structure
Stack이란? 메모리 안에 데이터들을 효율적으로 관리하게 도와주는 자료 참조 방식 중 하나이다. 단어의 의미가 '쌓아서 올린다', '더미'인 것처럼 택배 상자가 쌓이는 모습을 상상하면 되는데 제일 마지막에 들어온 데이터가 가장 먼저 나가는 LIFO(Last In First Out) 구조를 가진 자료구조이다. 한 쪽 끝에서만 데이터를 넣거나 뺄 수 있는 선형 구조이다. 스택의 예로는 'Ctrl + Z' 즉, 실행 취소를 들 수 있다. 누를 때마다 최근에 한 작업이 실행 취소된다. 그외에는 웹브라우저 뒤로 가기 기능이나 계산기 등이 있다. Stack의 주요 기능 1. pop() : 스택에서 가장 위에 있는 항목을 꺼낸다. 2. push(item) : item을 스택의 가장 위에 추가한다. 3. peek()..