개발자 과정 기록 및 일기

중앙정보기술인재개발원 개발자 과정 16일차 기록입니다.

킹갓왕동현 2024. 2. 20. 23:39

오늘 수업도 아직은 기초적인 걸 배우고 있어서, 수업에 관한 건 딱히 적을 게 없고,

 

가장 기억나는 건 동료 수강생분께 얘기를 듣고 Java 에서 이중for문을 이용해서

별을 차곡차곡 출력하는 '별찍기' 라는

굉장히 대중적인 예제가 있다는 걸 알게됐고, 그걸 해봤습니다.

 

처음엔 변수의 데이터타입을 char로 지정해놓고,

반복문을 돌리면 char값이 어떻게 해야 안바뀌고 따로따로 누적이 되려나 생각하다가,

 

String 타입으로 하면 된다는 걸 깨닫고, 옆에 손으로 그리면서 for문을 작성하기 시작했습니다.

 

 

별찍기 예제에는 6가지가 있었고, 이런 모양이었습니다.

 

1번부터 순서대로 풀었더니 사실 거의 같은 알고리즘이라

두번째부턴 어렵지 않았고,

 

다 풀고나서 느낀 점이, "최근에 굉장히 함수의 메커니즘에 대해서 이해하려고 열심히 노력한 결실이 있다." 였습니다.

 

짧게 6번 문제만 코드를 적어보겠습니다.

--------------------------------------------------------

int x = 9;
String i = "★", j = "";

for ( int num = 0; num < 5; num++ ) {
  System.out.print( j );
  for ( int num2 = 0; num2 < x; num2++ ) {
    System.out.print( i );
  }
  System.out.print("\n");
  j += " ";
  x -= 2;
}

--------------------------------------------------------

위 부분만 코드를 복사해서 메인 메소드 안에 붙여넣기 해서 실행하시면 별이 이쁘게 찍히는 걸 볼 수 있습니다.

 

간단히 코드를 설명하자면,

 

String i 와 j는 각각 "★";과 아무것도 없는 문자열 "";를 선언한 것이고,

 

int x = 9; 를 선언한 이유는,

 

  한줄에 별이 총 9개 찍히는데, 아랫줄로 갈수록 별이 2개씩 줄어들어야 하기 때문에,

  내부 for문의 num2의 반복횟수, 즉 단순히 별이 9번 찍혀야 돼서 num2 < 9가 아닌, 9 대신 변수 x를 넣어준 후,

  내부 for문이 종료되고, 그 뒤에 외부 for문 안에 x -= 2; 를 입력함으로써, 다음번 반복실행 때마다,

   x의 값을 2씩 줄어들게 하기 위함입니다.

 

자 그럼 다시 처음으로 돌아와서,

외부 for문이 첫바퀴를 돌 때는, j를 출력해도 빈 문자열이기 때문에 아무것도 출력되지 않고,

그 뒤에 바로 내부 for문이 실행되면서 i의 값 즉, ★이 9번 반복되고 내부for문이 종료됩니다.

 

그리고 아랫줄의 외부for문이 마저 실행되는데,

 \n을 출력함으로써 일단 줄바꿈이 되고,

j의 값에 공백을 한칸 넣어줌으로써 다음번 반복실행때마다 j는 공백이 한칸씩 늘어나게 됩니다.

 

그리고 위에 얘기한 대로 x는 반복실행 때마다 2씩 줄어들게 되고, 첫번째 외부 for문의 반복실행이 끝납니다.

 

그렇게 다음 반복실행을 하게되면, j는 공백이 +1칸 생겼고, ★은 -2개가 줄어들게 되고,

이 과정이 외부 for문에 정해진 반복횟수대로 총 5번 반복되면,

예쁜 역피라미드 모양이 갖춰지게 됩니다!

 

 

 

그럼 시간이 늦어서 오늘은 여기서 마치도록 하겠습니다.