본문 바로가기
스터디일지

[2023.07.24] 자료구조 / 알고리즘

by 똥쟁이핑크 2023. 7. 24.

https://www.acmicpc.net/problem/2839

 

2839번: 설탕 배달

상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그

www.acmicpc.net

https://www.acmicpc.net/problem/4948

 

4948번: 베르트랑 공준

베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다. 이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼

www.acmicpc.net

https://www.acmicpc.net/problem/2869

 

2869번: 달팽이는 올라가고 싶다

첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)

www.acmicpc.net

 

 

1. 알고리즘?

  •  알고리즘의 정의는 문제를 해결하는 절차나 방법을 설명하는 과정이다.
  • 좋은 알고리즘은 말 그대로 성능이 좋아야 하며 점근 표기법으로 효율성을 평가할 수 있다.
    • Big-O 표기법
      • 최악의 성능 → 연산량 계산
      • 표기법 O(N)
    • Big-Ω 표기법이 있다.
      • 최선의 성능 → 연산량 계산
      • 표기법  Ω(1)
  • 알고리즘의 성능은 입력값에 따라 달라질 수 있다.
    • 입력값이 최선의 경우일 가능성이 적기 때문에 대부분 최악의 경우를 대비하여 Big-O 표기법으로 분석한다.
  • 시간복잡도
    • 입력값과 문제를 해결하는데 걸리는 시간과의 상관관계
  • 공간복잡도
    • 입력값과 문제를 해결하는데 걸리는 공관과의 상관관계
    • 사용되는 메모리

 

2. 자료구조 (Stack & Queue)

public class Main {
    public static void main(String[] args) throws IOException {
        Stack<Integer> stack = new Stack<>();
        stack.push(3); // 값 집어 넣기
        stack.push(1);
        stack.push(3);
        stack.push(5);

        System.out.println("stack : " + stack); // 

        stack.pop(); // 값 꺼내기
        System.out.println("stack.pop() : " + stack);


        Queue<Integer> queue = new LinkedList<>();
        queue.add(3); // 값 집어 넣기
        queue.add(1);
        queue.add(3);
        queue.add(5);

        System.out.println("queue : " + queue);
        queue.poll(); // 값 꺼내기

        System.out.println("queue.poll() : " + queue);

 

코드의 결과

스택을 선언하고 값을 집어 넣은 다음 pop을 했을 때 나중에 들어간 값이 먼저 제거됨을 확인했다.

큐를 선언하고 값을 집어 넣고 poll을 했을 때 먼저 들어간 값이 먼저 제거됨을 확인했다.

 

'스터디일지' 카테고리의 다른 글

[WIL] Java Spring 1 주차  (0) 2023.08.27
[WIL] 알고리즘 주차  (0) 2023.08.20
[WIL] 미니 프로젝트 후  (0) 2023.08.13
[2 주차] JQuery, Javascript, Fetch 알아보기  (0) 2023.07.04
[1 주차]HTML, CSS 알아보기  (0) 2023.07.01