백준 10951번 A+B-4
EOF(End Of File)
Scanner scan = new Scanner(System.in);
While(scan.hasNextLine()){
scan.nextLine();
}
while(scan.hasNextInt()){
scan.nextInt();
}
EOF는 데이터 소스로부터 더 이상 읽을 수 있는 데이터가 없음을 나타내는 용어이다.
주로 입력값을 얼마나 받을 지 명시하지 않을 경우, EOF를 사용한다.
자바에서는 hasNextLine();, hasNextInt(); 등을 사용한다
eclipse Quiz15
①세로로 1,4,7단 ②세로로 2,5,8단 ③세로로 3,6,9단 생성
i는 3씩 더해지므로 처음 세로로 생성되는건 1단 4단 7단임. (거기에 \t를 통해 가로로 붙어서) i에다 1을 더한 것에 3이 추가되어(i+1)+3 2단 5단 8단이 생성되고, (마찬가지로 \t를 통해 가로로 붙어서) i에다 2를 더한 (i+2)+3 3단 6단 9단이 생성됨.
j는 i가 변하기 전에 돌아가니까 *1~*9 생성 가능.
\t는 문자열에 섞어서 쓰면 8칸 띄어쓰기 후 줄을 맞추어 줌. 그냥 띄어쓰기를 하면 한자리수-두자리수 차이때매 삐뚤삐뚤해진다.
구구단이라고 해서 n*m같은 식이라고 생각하지 말고 유도리있게 변환. n*m, (n+1)*m, (n+2)*m 등등등...
123 456 789가 아니라 147 258 369의 그룹으로 모아서 생각. 세로로 한 그룹 만들고 옆으로 증가
줄바꿈이 어디에 들어가는지 확인. for 중첩문에서 어디에 뭐가 들어가는지 파악함에 주의. 머리속으로 어떻게 출력시킬 것인가를 순차적으로 생각하면서 만들어야 한다.
!출력 필기가 틀렸다!
출력은 가로나 세로만 가능. 가로를 "다" 만들고 세로를 반복 or 세로의 첫번째 줄의 식을 "다" 만들고 아래로 쫙 출력
eclipse Quiz16
네모 만들기
무엇을 먼저 실행할것인지를 생각해야 한다. ①열 개수만큼 반복해서 가로를 만들겠다. ②열이 1열 번호이거나 마지막열 번호일 때 가로로 *을 쫙 만든다. ③열 한개만큼의 가로를 만들었으니 줄바꿈을 준다. ④열이 가운데일 때, 즉 1열이거나 마지막열 번호가 아니니 공백이 들어가야 할 때를 만들겠다. ⑤ 행(가로)의 첫번째와 마지막은 * ⑥ 행(가로)의 중간은 공백 ⑦ 열 한개만큼의 가로를 만들었으니 줄바꿈을 준다.
또는 완전 간단하게. 가로세로를 좌표 개념으로 생각하기! (n,m)로 생각하면 n이나 m에 1이 들어가는 곳=>테두리에 다 *를 넣어버리면 끝! 나머지공간은 공백으로
eclipse MultiForEx02
for문이 중첩되었을 때.
백준 별찍기의 진화형. 중요한것은 반복될 때의 규칙을 찾아내는 것. 우선 하나하나 다 적어본다. i행의 숫자도,*의 갯수도, 공백의 개수도 전부 적은 후에 규칙을 찾아내기. 규칙은 사칙연산하면 엥간하면 나온다.
i에 따라서 j가 변한다.
이해가 안되면 머리속으로 2번만 돌려보기. 2번 정도 돌려서 만족하면 뒤의 규칙은 잘 이루어진다. 공책에다 써보면서 하는 것도 방법임!
변수를 써주면 변수값을 바꿀 때마다 특정한 규칙에 맞게 출력이 된다==>변수를 쓰는 이유!
eclipse MultiForEx03
count가 for문 밖에서 선언되었을 때 실행되면 count는 계속 증가하고 있다.(1 3 5 8 10 ...)
-->따라서, count를 다시 0으로 만들어줘야 한다. 쉽게 for문안에 넣으면 실행하고 위로 올라갔을 때 초기화되므로 해결됨.
어디가 문제일지 모르겠으면 중간중간 출력문을 넣는다. 아니면 debug 사용하기.
eclipse EnhanceForEx
향상된 for 루프
for( type 변수 : 배열명 ) {
실행문
}
---------------------
int[] arr = { }
for( int a : arr ) {
실행문
}
arr에 들어있는 값들을 a에 담아줌
향상된 for 루프를 사용하면 배열 및 컬렉션에 들어있는 모든 원소들에 대한 반복 작업을 매우 쉽게 처리할 수 있다.
a가 몇번일 때 뭐가 들어간다는 식은 어려울지도. 이건 반복작업에 쓰니까. 배열에 어떤 수가 들어있는지 확인하거나 배열의 들어있는 수들을 전부 합칠 때의 예시로 확인했다.
형변환을 출력문 안에서 했다!
System.out.printf("평균 : %.2f\n", (double)sum/scoer.length);
-double이 기본이기 때문에 float라는 뜻으로 f를 붙였음.
-소수 두자리까지니까 %.2 사용하였음.
곱하기를 가로로 3단씩 출력하는 quiz15와 입력받은 값으로 사각형을 만드는 문제인 quiz16을 못풀었다..
출력이 가로나 세로로만 이루어지므로 우선 뭘 반복시키며 실행할 것인지를 파악하기.