사실 배열에 대해서 잘 알고 있다고 생각했는데 문제를 읽고서 간이 문제가 있어서 풀었는데.. 당연히 정답일 줄 알았지만 결국 틀림.
앞서 있었던 문제를 제대로 읽지 않았던 것이 또 문제가 되었다. 휴
다음엔 좀 더 주의해야겠다.
해설 강의를 들어보니 거의 근접하게 문제 접근 방식을 생각했으나,
내가 생각한 문제 접근 방식이 자신이 없었는지 아니겠지.. 라는 생각이 젤 컸던게 문제인 것 같다.
그것이 마지막에 행과 열 중에 최댓값을 출력하면 될 것 같다고 생각했는데 최솟값 구하라고 했는데 최댓값을 구한다? 이건 무조건 아니라고 생각을 했던 부분이다.
앞으로 문제 풀 때 자신감을 갖는 게 중요해 보인다. 그러기 위해서는 문제를 많이 풀어보는 경험도 중요해 보인다.
앞으로 남은 문제도 계속해서 도전을 해봐야겠다.
03 배열
문제 풀기 :
백준 1236 성지키기 - https://www.acmicpc.net/problem/1236
import java.util.Scanner;
class Main {
public static void main (String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int M = sc.nextInt();
char[][] map = new char[N][M];
// 한줄 압력을 array로 넣기
for (int i = 0; i < N; i++){
map[i] = sc.next().toCharArray();
System.out.println(map[i]);
}
boolean[] rowExist = new boolean[N];
boolean[] colExist = new boolean[M];
for (int i = 0; i < N; i++)
for (int j = 0; j < M; j++)
if (map[i][j] == 'X') {
// 경비가 있으면 true
rowExist[i] = true;
colExist[j] = true;
}
int rowNeedCount = N;
int colNeedCount = M;
// 경비가 있는 행과 열은 빼기
for (int i = 0; i < N; i++)
if (rowExist[i]) rowNeedCount--;
for (int i = 0; i < M; i++)
if (colExist[i]) colNeedCount--;
// 행과 열 중에 최대값 출력.
System.out.println(Math.max(rowNeedCount, colNeedCount));
}
}
- 입출력 시간 비교
강의 내용 중 " 내 시간 복잡도에는 문제가 없는데 시간초과가 난다면 아래와 같은 비교를 통해서 알 수 있었다."
" Scanner 와 System.out.print 계열 함수는 상대적으로 느리다.
- 근데 나는 입력은 차이가 났지만, 출력에는 차이가 없어서 검색을 해봤다.
[참고하면 좋을 사이트]
1. Java로 PS를 할 때, Scanner와 System.out.println을 쓰면 안 되는 이유
https://steady-coding.tistory.com/183
2. bufferedwriter와 println 동작 차이
https://www.acmicpc.net/board/view/71804
- 문제 풀기 :
백준 A+B- https://www.acmicpc.net/problem/1000
"본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다."
수강중인 강의 상세페이지 링크
'Coding Test > FASTCAMPUS' 카테고리의 다른 글
패스트캠퍼스 Java 코딩테스트 강의 한 달 후기 (0) | 2023.05.18 |
---|---|
패스트캠퍼스 Java 코딩테스트 강의 4주차 (0) | 2023.05.11 |
패스트캠퍼스 Java 코딩테스트 강의 2주차 (0) | 2023.04.29 |
패스트캠퍼스 Java 코딩테스트 강의 1주차 (0) | 2023.04.22 |
댓글