정코딩
Home
  • 분류 전체보기 (421)
    • 알고리즘 (382)
      • Baekjoon (301)
      • SW Academy (39)
      • JUNGOL (7)
      • 프로그래머스 (33)
    • CS (4)
      • 알고리즘 (1)
    • 공부 (19)
      • JAVA (6)
      • BackEnd (4)
      • FrontEnd (3)
      • 프로젝트 (6)
    • 일상 (16)
      • 기타 (16)
Home
  • 분류 전체보기 (421)
    • 알고리즘 (382)
      • Baekjoon (301)
      • SW Academy (39)
      • JUNGOL (7)
      • 프로그래머스 (33)
    • CS (4)
      • 알고리즘 (1)
    • 공부 (19)
      • JAVA (6)
      • BackEnd (4)
      • FrontEnd (3)
      • 프로젝트 (6)
    • 일상 (16)
      • 기타 (16)
블로그 내 검색
Portfolio

정코딩

동의대학교 컴퓨터공학과 SSAFY 6기

  • 알고리즘/Baekjoon

    Baekjoon 7662 이중 우선순위 큐 JAVA

    2021. 11. 10.

    by. soonil

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

     

    7662번: 이중 우선순위 큐

    입력 데이터는 표준입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터의 첫째 줄에는 Q에 적

    www.acmicpc.net

    https://github.com/JUNGSOONIL/JAVA/blob/main/BAEKJOON%207662

     

    GitHub - JUNGSOONIL/JAVA: JAVA 소스 코드

    JAVA 소스 코드. Contribute to JUNGSOONIL/JAVA development by creating an account on GitHub.

    github.com

     

    해당 문제는 큐에 데이터를 삽입 또는 삭제하는 연산을 하고 그 결과를 출력하는 문제다.

    ​

    처음에 문제를 보고 우선순위 큐 하나를 두고 최댓값 최솟값에 따라 정렬을 해주면 되지 않을까 생각하고

    진행했는데 정렬이 안되어서 방법을 바꾸어 이번엔 최댓값 우선순위큐와

    최솟값 우선순위큐를 두어서 진행했으나

    최대 최솟값은 가져올 수 있으나 큐가 비었는지를 판단하지 못해

    결국 구글링을 통해 사람들의 소스를 보다보다 map을 많이들 사용 하늘 걸 보았고

    그중에 TreeMap을 이용한 문제풀이를 보게 되었고 TreeMap을 한 번도 사용해본 적이 없어 사용해보았다.

    ​

    트리맵

    TreeMap<integer, integer=""> map = new TreeMap<>(); </integer,>

    ​

    map.put(key, value) key : 삽입되는 키값, value : 삽입되는 밸류 값

    ​

    map.getOrDefault(key, defaultValue)

    key : 값을 가져와야 하는 요소의 키

    defaultValue : 지정된 키로 매핑된 값이 없는 경우 반환되어야 하는 기본값

    ​

    map.firstKey() : 젤 처음 키값

    map.lastKey() : 젤 마지막 키값

    ​

    위의 메서드를 이용해서 문제를 해결했고, map에 데이터를 추가할 때

    map.put(n, map.getOrDefault(n, 0)+1); 와 같은 방식으로 추가하면 만약 n 키값이 이미 사용됐으면

    거기에 해당하는 value 값이 map.getOrDefault(n, 0) 부분에서 반환되고 거기에 +1한 값으로 새로 갱신되며,

    만약 해당 키값이 없다면 map.getOrDefault(n, 0) 부분에서 0이 반환되고 거기에 +1한 값이 추가가 된다.

    ​

    getOrDefault 메서드를 중점으로 위의 메서드를 잘 이용하면 문제를 해결할 수 있다.

    728x90

    '알고리즘 > Baekjoon' 카테고리의 다른 글

    Baekjoon 18870 좌표 압축 JAVA  (0) 2021.11.11
    Baekjoon 1697 숨바꼭질 JAVA  (0) 2021.11.11
    Baekjoon 11279 최대 힙 JAVA  (0) 2021.11.10
    Baekjoon 1260 DFS와 BFS JAVA  (0) 2021.11.10
    Baekjoon 2630 색종이 만들기 JAVA  (0) 2021.11.10

    댓글

    관련글

    • Baekjoon 18870 좌표 압축 JAVA 2021.11.11
    • Baekjoon 1697 숨바꼭질 JAVA 2021.11.11
    • Baekjoon 11279 최대 힙 JAVA 2021.11.10
    • Baekjoon 1260 DFS와 BFS JAVA 2021.11.10
    맨 위로
전체 글 보기
  • Baekjoon
  • Solved
  • Github
Tistory 로그인
Tistory 로그아웃
로그아웃 글쓰기 관리

Today

Total

Designed by Nana
블로그 이미지
soonil

티스토리툴바