[백준] 34619번: 소대 배정 [python]

2025. 11. 1. 02:50·개발/백준 문제풀이

# 문제

34619번: 소대 배정
https://www.acmicpc.net/problem/34619

34619번: 소대 배정

오늘은 하늘이가 공군 기본군사훈련단에 입소하는 날이다. 하늘이가 배정된 대대에는 a개의 중대가 있고, 각 중대에는 b개의 소대가 있으며, 각 소대에는 정확히 n명의 훈련병이 배정된다.

www.acmicpc.net


# 접근

a는 중대의 수, b는 소대의 수, n은 소대당 인원, k는 하늘이의 입소 순서이다.n과 k에서의 연산을 통해 하늘이가 몇 번째 소대에 배정되는지 구하고, 그 소대가 몇 중대 몇 소대인지를 구하면 된다.
 
예를 들어 n = 3이라면, k = 7, 8, 9일 때 하늘이는 모두 3번째 소대에 입소할 것이므로 이 케이스에서 모두 같은 값을 내는 식을 만들면 된다. k/n 값을 올림하는 식이 위 조건을 만족한다.
 

n33333
k678910
 math.ceil(k/n)23334

 
따라서 이제 m = math.ceil(k/n)이라 둔 다음, m번째 소대가 몇 중대 몇 소대인지를 구하면 된다.
 
i를 구하는 것도 m을 구한 것과 동일하게 m을 b로 나눈 뒤 올림해주면 된다. 만약 한 중대에 소대가 4개 있다면 5, 6, 7, 8번째는 모두 2중대에 들어가야 하기 때문이다.
 
j는 그보다 단순하게 그냥 m을 b로 나눈 나머지가 된다. 단, j가 0일 경우에는 j를 b로 설정해줘야 한다. 그렇지 않으면 a = 2, b = 3, m = 6 같은 경우에 2중대 0소대와 같은 결과가 나오게 되기 때문이다.


# 풀이

import math
a,b,n,k = map(int, input().split())

m=math.ceil(k/n)

i=math.ceil(m/b)
j=m%b
if j==0:
  j=b
  
print(i,j)

위 접근을 그대로 구현하였다. 올림 기능을 사용하기 위해 math 라이브러리의 ceil() 함수를 사용하였다.
 
추가로 다음 두 코드는 똑같이 작동한다.

#방법 1
j=m%b
if j==0:
  j=b
  
#방법 2
 j = (m - 1) % b + 1

방법 1의 경우는 j의 범위가 0부터 b-1까지이기 때문에 0일 경우에 j를 b로 바꿔주는 작업을 거쳐야 한다.

반면에, 방법 2의 경우는 m을 (m - 1)로 만든 후 최종 연산 결과에 1을 더해 j의 범위를 자동으로 1부터 b 까지로 설정해준다.

방법 2가 훨씬 깔끔하지만 노베이스로 구현하는 입장에서는 방법 1을 더 쉽게 떠올릴 수 있을 것으로 보인다.

'개발 > 백준 문제풀이' 카테고리의 다른 글

[백준] 30052번: 거리 두기 게임 [C/C++]  (2) 2023.10.05
[백준] 15565번: 귀여운 라이언 [C/C++]  (0) 2023.10.03
'개발/백준 문제풀이' 카테고리의 다른 글
  • [백준] 30052번: 거리 두기 게임 [C/C++]
  • [백준] 15565번: 귀여운 라이언 [C/C++]
날잼
날잼
지극히 개인적인 취향의 설파, 근데 프로그래밍을 곁들인.
  • 날잼
    날잼의 블로그
    날잼
  • 전체
    오늘
    어제
    • 분류 전체보기 (30) N
      • 블로그 (2)
      • 일기 (5)
      • 사색 (17)
        • 고찰과 단상 (15)
        • 음악 (2)
      • 후기 (1)
      • 개발 (5) N
        • 백준 문제풀이 (3) N
        • 개인 개발 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    생일
    5600E
    학생게임개발
    블로그
    거리두기게임
    kisstherain
    날잼의블로그
    신문논술
    백준귀여운라이언
    일기
    민생회복지원금
    백준15565
    트럼프양말
    뚜또
    문제풀이
    C
    더미의역설
    택배
    날잼
    웨루
    기말고사
    유령도쿄
    C++
    백준34619
    백준거리두기게임
    역지사지
    레고
    웨루학생컨퍼런스
    PS
    백준
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
날잼
[백준] 34619번: 소대 배정 [python]
상단으로

티스토리툴바