[BOJ / Python] 5549번: 행성 탐사

2022. 2. 5. 16:17· Koala - 5기/코딩테스트 준비 스터디

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

 

5549번: 행성 탐사

상근이는 우주선을 타고 인간이 거주할 수 있는 행성을 찾고 있다. 마침내, 전 세계 최초로 인간이 거주할 수 있는 행성을 찾았다. 이 행성은 정글, 바다, 얼음이 뒤얽힌 행성이다. 상근이는 이

www.acmicpc.net

 

문제

 

풀이

n이라는 배열에 지도의 크기 M과 N을 각각 저장하고, qn에는 조사 영역의 개수를 입력받는다. 지도의 내용은 data배열에 저장하는데, 지역은 정글, 바다, 얼음으로 총 3 종류이므로 data배열과 크기가 같은 배열 jdata, odata, idata를 생성한다. data에 값을 입력받는 동시에 해당 위치의 영역이 J라면 jdata에, O라면 odata에, I라면 idata에 1을 입력하도록 한다. 마지막으로 q라는 배열을 만들어 조사 영역의 범위들을 입력하도록 한다.

위의 그림 중 가운데 표는 문제에 나와있는 예제에서 jdata를 추출해낸 표이다. 이 문제를 누적합으로 풀기 위해서는 오른쪽 표와 같이 jdata값을 해당 위치까지 점차적으로 더해가는 표가 필요한데, 이를 jd라고 정한다. odata에 대한 표는 od, idata에 대한 표는 id라고 하고, 같은 방식으로 표를 생성한다. 이 표를 이용하여 각 조사영역에서의 영역 종류 개수를 출력하도록 하는데, (x1,y1), (x2,y2)에서의 영역의 합을 구한다고 한다면 ((x2,y2)까지의 합)-((x1-1,y2)까지의 합)-((x2,y1-1)까지의 합)+((x1-1,y1-1)까지의 합) 으로 구하므로, jd, od, id에서 이 공식을 사용하여 해당 값을 구하도록 한다.

 

코드

input=__import__('sys').stdin.readline
n=[*map(int,input().split())]
qn=int(input())
data=[]
jdata=[[0]*n[1] for _ in range(n[0])]
odata=[[0]*n[1] for _ in range(n[0])]
idata=[[0]*n[1] for _ in range(n[0])]
for i in range(n[0]):
  data.append(input())
  for j in range(n[1]):
    if data[i][j]=='J':
      jdata[i][j]=1
    elif data[i][j]=="O":
      odata[i][j]=1
    else:
      idata[i][j]=1
q=[]
for i in range(qn):
  q.append([*map(int,input().split())])
jd=[[0]*(n[1]+1) for _ in range(n[0]+1)]
od=[[0]*(n[1]+1) for _ in range(n[0]+1)]
id=[[0]*(n[1]+1) for _ in range(n[0]+1)]
for i in range(1,n[0]+1):
  for j in range(1,n[1]+1):
    jd[i][j]=jd[i-1][j]+jd[i][j-1]-jd[i-1][j-1]+jdata[i-1][j-1]
    od[i][j]=od[i-1][j]+od[i][j-1]-od[i-1][j-1]+odata[i-1][j-1]
    id[i][j]=id[i-1][j]+id[i][j-1]-id[i-1][j-1]+idata[i-1][j-1]
for i in range(qn):
  print(jd[q[i][2]][q[i][3]]+jd[q[i][0]-1][q[i][1]-1]-jd[q[i][2]][q[i][1]-1]-jd[q[i][0]-1][q[i][3]],od[q[i][2]][q[i][3]]+od[q[i][0]-1][q[i][1]-1]-od[q[i][2]][q[i][1]-1]-od[q[i][0]-1][q[i][3]],id[q[i][2]][q[i][3]]+id[q[i][0]-1][q[i][1]-1]-id[q[i][2]][q[i][1]-1]-id[q[i][0]-1][q[i][3]])

 

결과

 

저작자표시 (새창열림)

'Koala - 5기 > 코딩테스트 준비 스터디' 카테고리의 다른 글

[BOJ / Swift] 17245 - 서버실  (3) 2022.02.06
[BOJ / C++] 17951 : 흩날리는 시험지 속에서 내 평점이 느껴진거야  (1) 2022.02.05
[백준/C++] 16713번: Generic Queries  (2) 2022.02.05
[백준/C++] 알고리즘 1644번 소수의 연속합  (1) 2022.01.31
[BOJ / Python] 1644 - 소수의 연속합  (0) 2022.01.31
'Koala - 5기/코딩테스트 준비 스터디' 카테고리의 다른 글
  • [BOJ / Swift] 17245 - 서버실
  • [BOJ / C++] 17951 : 흩날리는 시험지 속에서 내 평점이 느껴진거야
  • [백준/C++] 16713번: Generic Queries
  • [백준/C++] 알고리즘 1644번 소수의 연속합
KauKoala
KauKoala
항공대 알고리즘 동아리 Koala 🥰
KauKoala
Koala
KauKoala
전체
오늘
어제
  • 분류 전체보기 (1884)
    • 공지 게시판 (10)
    • 정보 게시판 (8)
    • Codeforce (15)
    • acm-icpc (6)
    • Koala - 1기 (16)
    • Koala - 2기 (111)
      • Programming Contest (1)
      • A반 (20)
      • B반 (39)
      • C반 (22)
      • 기초 강의 (18)
    • Koala - 3기 (10)
      • 기초 스터디 (7)
    • Koala - 4기 (67)
    • Koala - 5기 (144)
      • 기초 알고리즘 스터디 (75)
      • 코딩테스트 준비 스터디 (68)
    • Koala - 6기 (102)
      • 기초 알고리즘 스터디 (75)
      • 코딩테스트 준비 스터디 (25)
      • 모의 테스트 스터디 (1)
    • Koala - 7기 (167)
      • 기초 알고리즘 스터디 (97)
      • 코딩테스트 준비 스터디 (68)
      • 모의 테스트 스터디 (1)
    • Koala - 8기 (44)
      • 기초 알고리즘 스터디 (32)
      • 코딩테스트 준비 스터디 (10)
      • 코드포스 버츄얼 스터디 (0)
      • 프로그래머스 LV2 스터디 (0)
    • Koala - 9기 (205)
      • 기초 알고리즘 스터디 (138)
      • 코딩테스트 준비 스터디 (64)
      • 모의테스트 준비 스터디 (1)
    • Koala - 10기 (117)
      • 기초 알고리즘 스터디 (30)
      • 코딩테스트 준비 스터디 (86)
      • 모의테스트 준비 스터디 (1)
    • Koala - 11기 (151)
      • 기초 알고리즘 스터디 (46)
      • 코딩테스트 준비 스터디 (104)
      • 모의테스트 준비 스터디 (1)
    • Koala - 12기 (86)
      • 기초 알고리즘 스터디 (31)
      • 코딩테스트 준비 스터디 (55)
    • Koala - 13기 (119)
      • 기초 알고리즘 스터디 (52)
      • 코딩테스트 준비 스터디 (67)
    • Koala - 14기 (116)
      • 기초 알고리즘 스터디 (39)
      • 코딩테스트 준비 스터디 (77)
    • Koala - 15기 (138)
      • 기초 알고리즘 스터디 (73)
      • 코딩테스트 준비 스터디 (65)
    • Koala - 16기 (47)
      • 코딩테스트 기초 스터디 (16)
      • 코딩테스트 심화 스터디 (31)
    • Koala - 17기 (62)
      • 코딩테스트 기초 스터디 (15)
      • 코딩테스트 심화 스터디 (47)
    • Koala - 18기 (31)
      • 코딩테스트 기초 스터디 (11)
      • 코딩테스트 심화 스터디 (20)
    • Koala - 19기 (38)
      • 코딩테스트 기초 스터디 (7)
      • 코딩테스트 심화 스터디 (31)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 🐨항공대 알고리즘 학회 Koala 3기 모집
  • 🐨항공대 알고리즘 학회 Koala 2기 모집
  • 소모임 소개

인기 글

태그

  • dfs
  • 백트래킹
  • BFS
  • 백준
  • C++
  • dp
  • BOJ
  • 파이썬

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.3.0
KauKoala
[BOJ / Python] 5549번: 행성 탐사
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.