반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- MySQL완전삭제
- 도커 컨테이너
- 백준 바이러스
- 백준 등수매기기
- 파이썬 평범한배낭
- 프로그래머스
- CRUD
- 백준 피아노체조
- MongoDB
- 지도자동구축 파이썬
- 백준 점프
- 백준알파벳파이썬
- 금고털이 파이썬
- 백준 전쟁-전투
- 백준 예산
- 피아노체조 파이썬
- 1987파이썬
- express mongodb
- jenkins
- 백준 점프 파이썬
- 파이썬데이터분석라이브러리
- 소프티어 장애물인식프로그램
- 등수매기기 파이썬
- express
- 백준 A->B
- 백준 평범한배낭
- 백준 전쟁 파이썬
- 소프티어 지도자동구축
- 백준
- 장애물인식프로그램 파이썬
Archives
- Today
- Total
바위 뚫는중
[BOJ] 백준 10709. 기상캐스터 본문
반응형
문제
JOI시는 남북방향이 H 킬로미터, 동서방향이 W 킬로미터인 직사각형 모양이다. JOI시는 가로와 세로의 길이가 1킬로미터인 H × W 개의 작은 구역들로 나뉘어 있다. 북쪽으로부터 i 번째, 서쪽으로부터 j 번째에 있는 구역을 (i, j) 로 표시한다.
각 구역의 하늘에는 구름이 있을 수도, 없을 수도 있다. 모든 구름은 1분이 지날 때마다 1킬로미터씩 동쪽으로 이동한다. 오늘은 날씨가 정말 좋기 때문에 JOI시의 외부에서 구름이 이동해 오는 경우는 없다.
지금 각 구역의 하늘에 구름이 있는지 없는지를 알고 있다. 기상청에서 일하고 있는 여러분은 각 구역에 대해서 지금부터 몇 분뒤 처음으로 하늘에 구름이 오는지를 예측하는 일을 맡았다.
각 구역에 대해서 지금부터 몇 분뒤 처음으로 하늘에 구름이 오는지를 구하여라.
풀이
3 4
c..c
..c.
....
위와 같이 주어질 경우
0 1 2 0
-1 -1 0 1
-1 -1 -1 -1
이런 식으로 나타나게 된다.
쉽게 생각해보면
- . 이면 -1을 두고
- C가 나오면 나왔다고 카운트로 표시함
- 다시 C가 나오기 전까지 ++
무조건 동쪽(오른쪽)으로만 바람이 불어서 생각보다 쉽게 풀린다. 그치만,,난 오래걸림
개인적으로 가장 어려웠던 것은 역시나! 입출력!
난 왜이렇게 입출력이 어려울까,, 로직이 더 쉽게 느껴진다 흑
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static int H;
static int W;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
H = Integer.parseInt(st.nextToken());
W = Integer.parseInt(st.nextToken());
int cnt = 0; //C가 나올때 써준다
//C 가 있는 거 찾기
for (int i = 0; i < H; i++) {
String line = br.readLine();
for (int j = 0; j < W; j++) {
String x = String.valueOf(line.charAt(j)); // 한 문자씩 배열에 저장
// 전에 C가 없고 . 일 경우
if (x.equals(".") && cnt == 0) {
System.out.print( -1 +" ");
}
// C일 경우 무조건 0출력 카운트 세주기
else if ( x.equals("c")) {
System.out.print(0 +" ");
cnt = 1;
}
// . 이고, 카운트도 0이 아닐 경우
else if (x.equals(".") && cnt != 0) {
System.out.print(cnt +" ");
cnt ++; //C고 전 0 이 아닐 때 늘려준다
}
}
System.out.println();
cnt = 0; //0으로 초기화
}
}
}
반응형
'Algorithms > 백준' 카테고리의 다른 글
[BOJ] 백준 9461. 파도반 수열, DP (0) | 2023.09.02 |
---|---|
[BOJ] 백준 10814. 나이순 정렬, Comparator (0) | 2023.09.02 |
[BOJ] 백준 2979. 트럭주차 (0) | 2023.08.30 |
[BOJ] 백준 1157. 단어 공부 (2) | 2023.08.27 |
[BOJ] 백준 11724. 연결요소 개수 구하기 (0) | 2023.07.20 |