기본적인 반복문입니다. 해당 문제를 10분이내 풀어보세요.
첫 도전시 20분? 걸렸던 것 같습니다.
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
for (int i = 1; i <= 10; i++) {
for (int j = i; j < 10 + i; j++) {
// int num = j % 10 == 0 ? 10 : j % 10; // 숫자 10으로 나눈 나머지를 구하고 0이면 10으로 대체.
int num = 10-j;
if (j > 10) {
num += 10;
}
System.out.print(num+" ");
}
System.out.println();
}
/*for (int i = 1; i <= 10; i++) {
for (int j = i; j < i + 10; j++) {
System.out.print(j);
}
System.out.println();
}*/
}
}
필자는, 3개의 반복문을 돌려서, 조건문을 사용해서 역피라미드에서 10을 초과할경우 출력되게끔 하려고 하였으나, 제대로 구현하지 못했습니다.
(아마 지금은 가능할거임.
왜냐면, 해당 문제에서 KeyPoint는 반복문을 변수로 초기화하는 것입니다)
static 키워드는 클래스가 인스턴스화되지 않아도 메서드나 필드에 접근할 수 있게 해주는 것입니다. 이는 프로그램 실행 시 클래스가 메모리에 로드되면서 static 메서드와 변수도 메모리에 할당되기 때문입니다.
즉, static으로 지정된 메서드나 변수는 클래스의 인스턴스가 생성되지 않아도 사용 가능한 것입니다. 이는 프로그램의 전체에서 공유되어야 하는 값이나 애플리케이션 또는 프로그램이 시작될 때 초기화되어야 하는 경우에 사용됩니다.
예를 들어, 수학 연산을 수행하는 Math 클래스에는 static 메서드와 상수가 포함되어 있어 객체 생성 없이 사용할 수 있습니다. 이렇게 하면 메모리 사용이 효율적이며, 코드가 더 간결해집니다.
// static 객체 생성없이 가능 -- > 인스턴스화 때문. -- > 와이 ?
public class Main {
// 정적 변수 설w정
public static int staticCounter = 0;
// 인스턴스 변수 설정
public int instanceCounter = 0;
// 정적 메서드 설정
public static void incrementStaticCounter() {
staticCounter++;
}
// 인스턴스 메서드 설정
public void incrementInstanceCounter() {
instanceCounter++;
}
public static void main(String[] args) {
// 정적 메서드와 정적 변수 사용\
Main.incrementStaticCounter();
System.out.println("정적 counter: " + Main.staticCounter);
// 인스턴스 생성
Main example1 = new Main();
Main example2 = new Main();
// 인스턴스 메서드와 인스턴스 변수 사용
example1.incrementInstanceCounter();
example2.incrementInstanceCounter();
// 각 인스턴스의 변수 출력
System.out.println("example1의 인스턴스 counter: " + example1.instanceCounter);
System.out.println("example2의 인스턴스 counter: " + example2.instanceCounter);
// 정적 변수는 모든 인스턴스에서 동일한 값을 공유
System.out.println("example1의 정적 counter: " + example1.staticCounter);
System.out.println("example2의 정적 counter: " + example2.staticCounter);
}
}
this
와 this()
는 완전 다른 것입니다. (동일 선상으로 생각하면 안됨)
this
: 객체에서 넘어오거나, 클래스에서 설정한 값을 Field에 초기화하려고 사용함.
--> 즉, 자기 자신을 가리키는 참조 변수입니다.
this()
: 같은 클래스 내에 다른 생성자를 호출할 때 쓰임
class Person {
String name; // 인스턴스 변수
int age;
int height;
Person(String name, int age, int height){
this.name = name;
this.age = age;
this.height = height;
}
}
class Person{
String name; // 인스턴스 변수
int age;
int height;
Person(){
this("Andrew", 25, 185); // Person(String name, int age, int height)를 호출
}
Person(String name){
this(name, 25, 185);
}
Person(String name, int age, int height){
this.name = name;
this.age = age;
this.height = height;
}
}