Java 실습

[220513] 배열

ss__0 2022. 5. 15. 22:07

■ 목표 달성

1. 배열을 사용하여 성적처리를 만들수 있다.   (Ex016번예제)       (있다)

예제 16번 작성 코드
예제 16번 출력화면

■ 트러블 슈팅

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