사실 이 문제는 내가 푼 방식이 모범답안과 개념 풀이는 일치했다.
그러나 아직 코드를 효율적으로 가시성있게 작성하는 방법이 서툰데, 이 부분을 잘 정리한 답안을 발견해서 가져와봤다.
| - | 레벨 | 언어 | 개념 | 정답률 |
|---|---|---|---|---|
| 문제 | Lv.0 | java | 반복문 | 60% |
class Solution {
public int solution(int[][] board) {
int answer = 0;
int length = board.length; //길이
int[][] temp = new int[length+2][length+2];
// 길이를 2 늘린 액자용 배열 생성 -> 이러면 단순한 조건식으로 안전영역 구할 수 있음
// 액자에 board 이식.
for(int i=1; i<length+1; i++){
for(int j=1; j<length+1;j++){
temp[i][j]=board[i-1][j-1];
}
}
//위험지대 찾기
for(int i=1; i<length+1; i++){
for(int j=1; j<length+1;j++){
if(temp[i][j]==1){
for(int a = i-1; a<=i+1; a++){
for(int b =j-1; b<=j+1; b++){
if(temp[a][b]!=1) temp[a][b]=2;
}
}
}
}
}
// 안전지대 카운트
for(int i=1; i<length+1; i++){
for(int j=1; j<length+1;j++){
if(temp[i][j]==0) answer++;
System.out.print(temp[i][j]);
}
System.out.println("");
}
return answer;
}
}
위의 코드에서 특히 "위험지대 찾기"라고 주석이 달려있는 부분의 for 반복문이 인상적이었다.
실제로 사람들의 답변들만 봐도 반복문을 제대로 사용하지 않고 무작정 그 자리에 하나하나 2를 대입하는 답들이 많았다.
그 중에서 이 답변이 가장 깔끔하고 간단하게 위험지대 자리에 2를 대입한 코드인 것 같았다.
ㄴ 실제로 이해도 엄청 쉽고 빨랐음
사실 반복문 사용이라함은 너무 기초 중의 기초일 수 있으나, 막상 코드를 정신없이 짜다보면 적절하게 사용하지 못할때가 은근 많은 것 같다.
사실 너무 쉬운 문제라 따로 아카아빙 하지 않으려다가 이것 또한 기록이니 적어놓으려고 한다!
슬슬 코틀린도 배워야하는데.. 코테 공부랑 개인프로젝트만으로도 시간이 부족해서 다 못해내고 있는 중 ..
블렌더도 배우고 싶고 배우고 싶은건 너무 많다!!
그래도 영어회화는 시작해서 꾸준히 하고 있다 ㅎ
암튼.. 오늘도 끝!
내일은 개인 프로젝트도 진도 팍팍 나가야지,, 벌써 3월이 다 되어가더라고.
어제 글을 읽다가 페이지와 기능이 많다고 좋은 프로젝트가 아니고, 3-4페이지라도 좋으니 핵심 기능만을 위주로 퀄리티 있는 프로젝트를 뽑아내는게 중요하다는 글을 봤다.
솔직히 맞는 말 같았다. 특히 개인프로젝트라면 더더욱.
그래서 내가 구현하려던 앱의 부가적인 기능들을 다 덜어내고, 핵심 기능 한 가지를 위주로 다시 프로젝트를 잡아보려고 한다.
아 참고로 나는 현재 '해적상점'이라는 케이팝 굿즈 거래 앱을 만들고 있다.
사실 시작한지는 꽤 되었으나, 학기 중에는 전혀 손을 못댔고 종강을 하고 나서야 제대로 개발을 시작했다. 최근에는 이래저래 방황하느라 거의 손을 못댄 상황.
내일부터는 빠르게 진도를 나가서 얼른 배포해야지.
벨로그를 시작하니 여기서 다양한 개발하는 사람들의 이야기를 들을 수 있고, 눈치보지 않고 나의 개발로그북을 써내려갈 수 있어서 너무 좋다.
여기서 만난 사람들과 프로젝트를 함께해도 너무 재밌을듯 ㅎ