■ 목표 달성
1. 배열을 사용하여 성적처리를 만들수 있다. (Ex016번예제) (있다)
■ 트러블 슈팅
1)코드 누수 제거. (break; 활용하기)
'배열[0]부터 입력받은 값이 있는 곳까지 같은 값이 있는지 확인하는 과정'에서 같은 값이 있으면 이후 처리를 거칠 필요가 없다. 따라서 for문에서 빠져나오는게 필요하다. 그렇지 않으면 불필요한 처리 과정이 생기게 된다.
break;를 활용하면 설정한 조건이 true이면 가장 가까운 for문에서 빠져나오게 되므로 필요없는 과정을 거치지 않아도 된다. break;와 continue;를 적극적으로 활용하면 보다 좋은 if구문을 작성할 수 있다.
2) 헷갈렸던 코드 리뷰
//내가 생각했던 코드
for(int j=0;j<size-1;j++) {
for(int i=1;i<size;i++) {
if(avg[j] > avg[i]) {rank[i]+=1;}
}
}
5칸의 int배열이 있을 때, 각 칸을 비교해서 rank를 매기는 코드를 작성하는 예제였다.
내가 처음에 생각했던 알고리즘은 [0]번째 칸을 순서대로 [1]~[size-1]까지 비교해서 j가 클 때, i에 해당하는 rank의 배열에 +1을 더하는 과정이었다.
하지만 리뷰해주신 이상적인 코드는 변수i와 j가 둘 다 [0]부터 시작해서 j가 i보다 크고 j와 i가 같지 않을 경우에 rank의 해당 배열에 +1이 되는 것이었다.
//이상적인 코드
for(int j=0;j<size;j++) {
for(int i=0;i<size;i++) {
if(avg[j] > avg[i] && i != j) {rank[i]+=1;}
}
}
■ 오늘의 소감
알고리즘 만들다보니 내가 생각한 대로 구현이 되지 않아서 짜증이 나기도 했지만
어떻게든 구현이 되는 걸 보면 모든 게 다 해결된 것 같은 느낌이 들어서 좋기도 하다.
하지만 좀 더 코드가 간결하고 정리가 되도록 하고 싶은데 단번에 그렇게 되지 않아서 코드 작성 능력을 늘려야 겠다는 생각이 계속 든다.
나도 이쁜 코드 짜고 싶다....

'Java 실습' 카테고리의 다른 글
[220518] Method (0) | 2022.05.19 |
---|---|
[220516] Array[][] 2차원 배열 (0) | 2022.05.16 |
[220512]배열 Array (0) | 2022.05.12 |
[220511] for문 활용 (0) | 2022.05.12 |
[220510]다중 for문 (0) | 2022.05.10 |