Tany
백문이불어일Tany
Tany
전체 방문자
오늘
어제
  • 분류 전체보기 (197)
    • JAVA TPC (1)
    • JAVA (10)
    • CS (3)
    • SPRING (5)
    • DFS BFS (12)
    • SQL (7)
    • 알고리즘 정리 (76)
    • Git, Github (3)
    • 학습 계획 (36)
    • 코드스쿼드 학습일지 (19)
    • Servlet (5)
    • VPC (2)
    • AWS (4)
    • JPA (5)
    • 취미생활 (2)
    • 프로젝트 기록 (7)
      • Issue Tracker 삽질 기록 (5)
      • 당근마켓 API 서버 기록 (2)
      • 나만의 블로그 제작 기록 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 알고리즘
  • java
  • JPA
  • sql
  • 프로그래머스
  • 면접을 위한 CS 전공지식 노트
  • 문자열
  • 자바
  • JSP
  • 완전탐색
  • BFS
  • hash
  • dfs
  • MVC
  • github
  • MySQL
  • 파이썬
  • 백준
  • 이분탐색
  • 이코테
  • AWS
  • 정렬
  • 해시
  • GIT
  • 자료구조
  • 재귀
  • 주간 학습 계획
  • Stack
  • 인프런
  • EC2

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Tany

백문이불어일Tany

자바(Java) 알고리즘 문제풀이 공주 구하기 [인프런 / Queue]
알고리즘 정리

자바(Java) 알고리즘 문제풀이 공주 구하기 [인프런 / Queue]

2022. 7. 18. 23:05

출처) 인프런

강의의 문제를 가져왔기 때문에 밝힙니다 ! 
임의로 추가, 수정, 삭제한 내용들이 있으니 정확한 이해를 위해서는 강의를 구매하시는 것을 추천드립니다 😅
출처 : 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 (인프런 강의) 

 

 

 


 

 

 

1) 공주 구하기

수건 돌리기와 비슷한? 문제였다.

N 명의 사람 중 K 라는 특정 수를 외치면 그 사람은 빠지고 한 사람이 남을 때 까지 이어서 진행, 그 사람을 구해내면 되는 간단한 문제였다.

예를 들어 N = 4 / K = 2 라면, [1, 2, 3, 4] -> [1, 3, 4] -> [1, 3] -> [1] 로 진행되어 1번 사람이 마지막에 남게된다.

 

헷갈렸던 부분은 특정 수를 외친 사람이 빠지고 다시 1부터 세야하는 부분 ? 이 조금 헷갈렸지만, Queue 를 사용해 특정 수를 외친 사람을

poll() 을 사용해 큐에서 빼고, 빠진 사람 앞의 사람들을 모두 뒤로 넘겨서 풀어낼 수 있었다. 뭔가 랜덤 댄스 챌린지 같은 ... ㅋㅋ

private static int solution(int n, int k) {
    Queue<Integer> queue = new LinkedList<>();
    int answer = 0;

    for (int i = 1; i <= n; i++) {
        queue.offer(i);
    }

    while (queue.size() != 1) {
    
    	// 숫자 외치지 않는 앞 사람들은 다시 뒤로 보내야한다.
        for (int i = 1; i < k; i++) {
            queue.offer(queue.poll());
        }
        
        // 특정 숫자를 외친 사람은 빼준다.
        queue.poll();
    }

	// 마지막에 남은 사람 추출
    answer = queue.poll();
    return answer;
}

'알고리즘 정리' 카테고리의 다른 글

자바(Java) 알고리즘 문제풀이 씨름 선수 [인프런 / 그리디]  (0) 2022.08.12
자바(Java) 알고리즘 문제풀이 같은 숫자는 싫어 [프로그래머스 / Stack]  (0) 2022.07.19
자바(Java) 알고리즘 문제풀이 쇠막대기 [인프런 / Stack]  (0) 2022.07.18
자바(Java) 알고리즘 문제풀이 올바른 괄호,괄호문자제거 [인프런 / Stack]  (0) 2022.07.17
자바(Java) 알고리즘 문제풀이 매출액의 종류 [인프런 / Hash]  (0) 2022.07.11
    '알고리즘 정리' 카테고리의 다른 글
    • 자바(Java) 알고리즘 문제풀이 씨름 선수 [인프런 / 그리디]
    • 자바(Java) 알고리즘 문제풀이 같은 숫자는 싫어 [프로그래머스 / Stack]
    • 자바(Java) 알고리즘 문제풀이 쇠막대기 [인프런 / Stack]
    • 자바(Java) 알고리즘 문제풀이 올바른 괄호,괄호문자제거 [인프런 / Stack]
    Tany
    Tany
    내가 보려고 만드는 백엔드 기록장 Github https://github.com/juni8453

    티스토리툴바