[21.07.08] 반복문 문제풀이

yed·2021년 7월 9일
0

코드가 길어도 포함관계를 파악해서 잘라서 보는게 중요
코드의 논리적인 순서가 중요


break 키워드

반복문(for, while, do-while)에서 break를 만나면 break가 있는 위치에서 가장 가까운 포함된 반복문이 종료됩니다. 만약 중첩반복문에서 안쪽의 반복문에 break가 있다면 중첩반복문 전체가 종료되는게 아니라 안쪽 반복문만 종료되는거져 꼭 써야하는건 아니지만 break를 쓰면 코드가 명확하게 보이기 때문에 코드가 길어질수록 유용해요


[문제] 랜덤 주사위

두 개의 주사위가 같은 숫자가 나오면 종료

int count = 1; //횟수

while(true) {
	double rX=Math.random();
	double rY=Math.random();
	int x=(int)(rX*6+1);
	int y=(int)(rY*6+1);
	
	System.out.println(count+"번째");
	System.out.println("("+x+","+y+")");
	if(x==y)
		break;
	count++;
}

[문제] 합계 구하기

sum = (1 + (-2) + 3 + (-4) + 5 + ... + n)
sum >= 100 일 때의 n과 sum값은?
1. n은 1씩 증가
2. 짝수는 음수
반복이 끝나는 범위를 모르니깐 while문 사용

int sum=0, n=1;
while(sum<=100) {	
	if(n%2==0) {
		sum += -n;
	}else {
		sum += n;
	}
	if(sum>=100) {
		System.out.println("n = "+n+", sum = "+sum);
		break;
	}
	n++;
}

[문제] 도형 만들기

	*
	**
	***
	****
	*****
	*****
	 ****
	  ***
	   **
	    *

아래쪽 삼각형은 j가 5번씩 반복하되 *이 없는 곳을 공백으로 채움
1. i가 2면 5개 중의 1개가 공백. 4개가 별. 1<2.
2. i가 3이면 5개 중의 2개가 공백. 3개가 별. 1<3, 2<3.
= j가 i보다 작으면 공백 출력

for(int i=1;i<=5;i++) {
	for(int j=1;j<=i;j++) {
		System.out.print("*");
	}
	System.out.println();
}
for(int i=1; i<=5; i++) {
	for(int j=1; j<=5;j++) {  
		if(j<i) {
			System.out.print(" ");
		}else {
			System.out.print("*");
		}
	}
	System.out.println();
}

삼각형 두개가 겹쳐진 도형인데요 위의 삼각형은 어제 푼 codeup문제랑 똑같았고 문제는 아래쪽 삼각형이었습니다. 규칙을 찾아보려 이것저것 생각했는데 공백이 i-1이다! 근데 이걸 어떻게 조건으로 걸지? 라는 것에 계속 사로잡혀서 많이 애먹었어요ㅠㅠ
j>i를 발견한 건 조건을 이것저것 다 넣고빼고 하다가 도형이 완성된뒤에야 코드를 분석해본 것..ㅎ 분발하자😥 강사님께서 알려주신 다른방법은 i-j>0을 조건으로 하는 것! 여러가지가 있네용


정렬 알고리즘은 따로 공부해보기!
어려워도 좌절하지말좌💪💪

(다 써놓고 등록하기 까먹기ㅎ)
profile
6개월 국비과정 기록하기

0개의 댓글