시작 조건;
While(반복 조건<-언제까지?) {
반복적으로 실행될 구문;
진행 조건;
}
while(true) <-트루로 고정됨 <-하드코딩
근데 트루로하면 계속 실행되니까 멈추도록 해야함.
int i = 0;
while (i<10) {
System.out.println("1");
i++; // i=i+1;
}
for(초기화(시작 조건); 종료 조건(반복 조건); 반복실행(진행 조건)) {
반복 내용(반복적으로 실행될 구문);
}
< for문으로 구현 >
for (int i=0; i<10; i++) {
System.out.println("1");
}
1을 10번 출력하고 싶다고 하면, 다음과 같이 구현할 수 있다.
< while문으로 구현 >
int i=0; //언제까지 반복될 것이냐! 를 설명하는 요소
while (i<10) { //언제까지 반복될 것이냐! 를 설명하는 요소
System.out.println("1"); <- 이 부분이
i++; //언제까지 반복될 것이냐! 를 설명하는 요소
}
-> 서로 밀접한 관계의 로직임에도 서로 멀리 떨어져있음.
ex) int i=0; 아래와 sout 아래에 로직이 1000줄이라고 가정한다면 코드가 복잡해짐에 따라 언제까지 반복될 것이냐! 를 설명하는 요소가 멀리 떨어지게 됨. -> 코드를 작성하는 것이 어려워질 수 있게 됨
< for문으로 구현 >
for (int i=0; i<10; i++) { //하나의 문법적인 것으로 응집시켜 놓기에, 보기도 좋고 관리하기 좋다.
System.out.println("1");
}
-> 초기값이 있고 언제까지 반복할 것이냐는 조건이 있고 "반복될 때마다 초기값을 변경시켜주는(초기화)" 구성을 갖고있는 반복문이라면 for문이 바람직함
하지만 일반적으로는 반복 횟수를 아는 경우 for, 모르는 경우 while을 쓰라고 말하는데, 꼭 그렇지는 않다.
1) for문의 구조를 보면 시작 조건을 입력할 때 반드시 변수를 초기화시킨다. 즉 for 문 안에서 변수의 초기화가 이루어지는 것이다. 따라서 루프를 시작하기 전에 이미 변수가 초기화되어있다면 while을 쓰는 것이 더 직관적이다. 반복 횟수가 정해져있다고 하더라도, 굳이 다시 초기화를 하면서 for문을 사용할 필요는 없다.
2) 또, 가독성 측면에서 while문이 더 나은 측면도 있다. for (int i=0; i<num; i++) 보다는 while (i<num) 이 더 간단하고 직관적이다. 변수 이름이나 코드의 길이가 길어질수록 더욱 그렇다. 한 줄에 내용을 집약해서 넣느냐, 여러 줄에 나눠 넣느냐의 차이이다.
3) 이 외에도 무한 루프를 구현하고 싶은 경우 while (true) 로 쉽게 작성 가능하므로 while을 쓴다.
참고: https://chloe-ki.tistory.com/entry/java-for-while-loop

내가 쓴 답안
class Solution {
public int solution(int n) {
while (n<=100) {
n++;
}
int i = n-1/7;
return i;
//for (int n=1; n<=100; n++) {
// n-1을 7로 나눠서 나온 몫 +1을 리턴하기
}
}
도저히 안돼서 풀이 참고해서 풂
class Solution {
public int solution(int n) {
int answer = 0;
if (n % 7 == 0)
answer = n / 7;
else
answer = n / 7 +1;
return answer;
}
}
class Solution {
public int solution(int n) {
if (n % 7 == 0)
return n / 7;
else
return n / 7 + 1;
}
}
괜히 for 쓸라다가 엉킨 거 같다.
for을 이용한 다른 사람 풀이
class Solution {
public int solution(int n) {
for(int i = 1; i <= 15; i++) {
if((7*i)/n >= 1) {
return i;
}
}
return 0;
}
}
class Solution {
public int solution(int n) {
int answer = 0;
for (int i = 0;i<n;i++){
if(i%7==0){
answer++;
}
}
return answer;
}
}
이건 for문을 사용해서 푸는 문제가 아니였던 걸로..
언제 필요한건지도 잘 공부해야겠다. 필요할 때를 잘 모른다.