728x90
반응형
SMALL
[소프티어] 나무 공격 자바 풀이 레벨2
링크
https://softeer.ai/practice/9657
문제 스펙
오늘 추가된 뜨끈한 문제라 그런지
제출5명, 참가자5명, 정답률100% 이다.
표장같은걸 던지는 것 같다
핵심 설명
- 숲을 나타내는 map이라는 2차원 배열 저장
- 5개의 투사체 경계를 알려줄 range 배열 저장
- 공격 시작시 투사체 1차원 배열 생성 (투사체 크기 5사이즈)
- 투사체 던질때, 반복문 변수 체크 (n먼저인지 m먼저인지)
- 환경파괴범도 있고 && 투사체도 있으면 then 둘다 없애주기
- 최종출력
난 투사체를 불덩이라고 상상했다.
정답 코드
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
// int n = Integer.parseInt(br.readLine());
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
int sum = 0;
int map[][] = new int[n][m];
for(int i=0; i<n; i++){
st = new StringTokenizer(br.readLine());
for(int j=0; j<m; j++){
int bit = Integer.parseInt(st.nextToken());
map[i][j] = bit;
if(bit == 1){
sum++;
}
}
}
int range[][] = new int[2][2];
for(int i=0; i<2; i++){
st = new StringTokenizer(br.readLine());
for(int j=0; j<2; j++){
int bit = Integer.parseInt(st.nextToken());
range[i][j] = bit-1;
}
}
// attack
for(int i=0; i<2; i++){
// 던질 불덩이 일자로 생성하기
int fire[] = new int[n];
for(int j=0; j<n; j++){
if(range[i][0] <= j && j <= range[i][1]){
fire[j] = 1;
}else{
fire[j] = 0;
}
}
// 불덩이 던지기
for(int y=0; y<m; y++){
for(int x=0; x<n; x++){
if(map[x][y] == 1 && fire[x] == 1){
map[x][y] = 0;
fire[x] = 0;
sum--;
}
}
}
}
bw.write(String.valueOf(sum));
// bw.write(String.valueOf(dap));
bw.close();
}
}
728x90
반응형
LIST
'알고리즘 단련장 > 소프티어' 카테고리의 다른 글
[소프티어] 징검다리 레벨3 자바 풀이 DP알고리즘 (0) | 2024.07.20 |
---|---|
[소프티어] 성적 평균 자바 풀이 레벨3 (0) | 2024.07.19 |
[소프티어] 레벨2 문제 유형 전체적인 난이도 후기 (올솔 후기) (0) | 2024.07.19 |
[소프티어] 레벨2 문제가 추가되었다. (나무 공격 트리어택) (1) | 2024.07.19 |
[소프티어] Recovering the Region 자바 풀이 레벨2 (한양대 HCPC 2023) Jigsaw Sudoku 직소 스도쿠 (0) | 2024.07.19 |