โœ๏ธ TIL

์œ ๋ฐ๋ฏธ ์ทจ์—…๋ถ€ํŠธ์บ ํ”„ - ํ”„๋ก ํŠธ์—”๋“œ&๋ฐฑ์—”๋“œ : 20์ผ์ฐจ TIL

Yuuuki 2024. 1. 12. 22:36

 

์ฝ”๋”ฉ ์—ฐ์Šต 4

public class WeatherAdviser {

    public String provideWeatherAdvisory(int temperature) {
        // TODO: Provide a weather advisory message based on the temperature.
        if (temperature < 0) {
            return "It's freezing! Wear a heavy coat.";
        } else if (temperature >= 0 && temperature <= 10) {
            return "It's cold! Bundle up.";
        } else if (temperature >= 11 && temperature <= 20) {
            return "It's cool! A light jacket will do.";
        } else {
            return "It's warm! Enjoy the day.";
        }
    }
}

if์•ˆ์— return ๊ตฌ๋ฌธ์ด ์žˆ๋‹ค๋ฉด, else if๋ฅผ ์‚ฌ์šฉํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.

→ ์–ด์ฐจํ”ผ else if๋ฌธ์œผ๋กœ ๋“ค์–ด๊ฐ”๋‹ค๋Š”๊ฒƒ์€ if์˜ return ๊ตฌ๋ฌธ์ด ๋™์ž‘ํ•˜์ง€ ์•Š์•˜๋‹ค๋Š”๊ฒƒ

 

public class WeatherAdviser {

    public String provideWeatherAdvisory(int temperature) {
        // TODO: Provide a weather advisory message based on the temperature.
        if (temperature < 0) {
            return "It's freezing! Wear a heavy coat.";
        }
        if (temperature <= 10) {
            return "It's cold! Bundle up.";
        } 
        if (temperature <= 20) {
            return "It's cool! A light jacket will do.";
        } 
        
        return "It's warm! Enjoy the day.";
        
    }
}

 

์ฝ”๋”ฉ ์˜ˆ์ œ: char๋ฅผ ์ด์šฉํ•œ switch๋ฌธ – ๋ชจ์Œ์ผ๊นŒ์š”? ์•„๋‹๊นŒ์š”?

public class MyChar {

    // Method to determine if a character is a vowel
    public boolean isVowel(char ch) {
        // Use a switch statement to check for each vowel, both lowercase and uppercase
        switch (ch) {
            case 'a': 
            case 'e': 
            case 'i': 
            case 'o': 
            case 'u':  
            case 'A': 
            case 'E': 
            case 'I': 
            case 'O': 
            case 'U': return true;
            default: return false;
            
            // TODO: Complete the switch statement
        }

    }
}
switch (ch) {
            case 'a','e','i','o','u':  
            case 'A','E','I','O','U': return true;
            default: return false;

fall through์— ์˜ํ•ด ์ด๋ ‡๊ฒŒ ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ค!

 

for๋ฌธ ์—ฐ์Šต

์•ฝ์ˆ˜ ํ•ฉ ๊ตฌํ•˜๊ธฐ

public int sumOfDivisors(){
	//6=2+3

	int sum=0;
	
	for(int i=2;i<=number-1;i++){
			if(number%i===0){ //์•ฝ์ˆ˜๋ผ๋ฉด
					sum+=i;
			}
	}

return sum;
}

 

public void printNumberTriangle() {
		//1
		//1 2
		//1 2 3
		//1 2 3 4
		//1 2 3 4 5
		
		for(int i=1;i<=number;i++) {
			for(int j=1;j<=i;j++) {
				System.out.print(j+' ');
			}
			System.out.println();
		}
	}

์ด์ค‘ for๋ฌธ์„ ์ด์šฉํ•ด, ๊ฐ ์ˆซ์ž๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 

for ๋ฃจํ”„:

  • ๋ฏธ๋ฆฌ ๋ฐ˜๋ณต ํšŸ์ˆ˜๋ฅผ ์•Œ๊ณ  ์žˆ์„ ๋•Œ ์‚ฌ์šฉ

while ๋ฃจํ”„:

  • ๋ฐ˜๋ณต์„ ๊ณ„์†ํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ์กฐ๊ฑด์œผ๋กœ ํ™•์ธํ•ด์•ผ ํ•  ๋•Œ ์‚ฌ์šฉ
  • ๋ฐ˜๋ณต ํšŸ์ˆ˜๋ฅผ ๋ช…ํ™•ํžˆ ์•Œ ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ์— ์œ ์šฉ

do-while ๋ฃจํ”„:

  • do-while ๋ฃจํ”„๋Š” while ๋ฃจํ”„์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ, ๋ฃจํ”„ ๋‚ด ์ฝ”๋“œ๋ฅผ ์ตœ์†Œ ํ•œ ๋ฒˆ ์‹คํ–‰ํ•œ ํ›„ ์กฐ๊ฑด์„ ๊ฒ€์‚ฌ-> ์ฝ”๋“œ๋ฅผ ์ตœ์†Œ ํ•œ ๋ฒˆ ์‹คํ–‰ํ•ด์•ผ ํ•  ๋•Œ ์‚ฌ์šฉ

 

์ฝ”๋”ฉ ์—ฐ์Šต 5

์ฝ”๋”ฉ ์˜ˆ์ œ: ์–ด๋–ค ์ˆ˜์˜ ํŒฉํ† ๋ฆฌ์–ผ ๊ณ„์‚ฐํ•˜๊ธฐ

public class FactorialCalculator {
    
    public int calculateFactorial(int number) {
        if(number<0) {
            return -1
        }
        int factorial=1;
        for(int i=2;i<=number;i++){
            factorial*=i;
        }
        return factorial;
    }
}

 

์ฝ”๋”ฉ ์˜ˆ์ œ: ์ˆซ์ž์˜ ๋งˆ์ง€๋ง‰ ์ž๋ฆฟ์ˆ˜ ๊ตฌํ•˜๊ธฐ

public class NumberUtils {

    public int getLastDigit(int number) {
        // Write your code here
        if (number < 0) {
            return -1;
        }
        return number % 10;
    }
}

 

์ฝ”๋”ฉ ์˜ˆ์ œ: ์ˆซ์ž์˜ ์ž๋ฆฟ์ˆ˜ ๊ตฌํ•˜๊ธฐ

public class NumberUtils {
    public int getNumberOfDigitsa(int number) {
        // Write your code here
        if(number<0){
            return -1;
        }
        if(number==0){ 
            return 1;
        }
        //12345>1234>123>12>1>0
        int count=0;
        while(number>0){
            number/=10;
            count++;
        }
        return count;
    }
}

 

์ฝ”๋”ฉ ์˜ˆ์ œ: ์ˆซ์ž์˜ ์ž๋ฆฟ์ˆ˜ ํ•ฉ๊ณ„ ๊ณ„์‚ฐํ•˜๊ธฐ

public class NumberUtils {

    public int getSumOfDigits(int number) {
        // Write your code here
        if(number<0){
            return -1;
        }
        if(number==0){
            return 0;
        }
        //1234>4>3>2>1>0
        int sum=0;
        while(number>0){
            sum+=number%10;
            number=number/10;
        }
        return sum;
    }
}

 

์ฝ”๋”ฉ ์˜ˆ์ œ: ์ˆซ์ž ์—ญ์ˆœ์œผ๋กœ ๋งŒ๋“ค๊ธฐ

public class NumberUtils {

    public int reverseNumber(int number) {
        // TODO: Write your code here
        if(number<0){
            return -1;
        }
        if(number==0){
            return 0;
        }
        int result=0;
        //10์„ ๋‚˜๋ˆ„๊ณ  10์„ ๋‹ค์‹œ ๊ณฑํ•œ๋‹ค. 456=654
        while(number>0){
            result=result*10+(number%10); //result=654
            number=number/10; 
            
        }
        return result;
        
    }
}

 

์ฝ”๋”ฉ ์˜ˆ์ œ: ์–ด๋–ค ์ˆ˜์˜ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜(LCM)

๊ณตํ†ต๋œ ๋ฐฐ์ˆ˜ ์ค‘ ๊ฐ€์žฅ ์ž‘์€์ˆ˜๋ฅผ ์ฐพ๊ธฐ ๋•Œ๋ฌธ์—, ๋” ํฐ์ˆ˜๋ฅผ ์ฐพ๊ณ  ๊ทธ ์ˆ˜๋ฅผ ๊ณฑํ•ด๊ฐ€๋ฉฐ, ๋‹ค๋ฅธ ์ž‘์€์ˆ˜๋กœ ๋‚˜๋ˆ ์ง€๋Š”์ง€๋ฅผ ํŒ๋ณ„ํ•˜๋ฉด๋œ๋‹ค.

public class BiNumber {

    private int number1;
    private int number2;
    public BiNumber(int number1, int number2) {
        this.number1 = number1;
        this.number2 = number2;
    }

    /**
     * Getter for the first number.
     * @return the first number.
     */
    public int getNumber1() {
        return number1;
    }

    /**
     * Getter for the second number.
     * @return the second number.
     */
    public int getNumber2() {
        return number2;
    }

    /**
     * Calculates and returns the least common multiple (LCM) of the two numbers.
     * If either number is negative, returns -1 as the LCM for negative numbers is undefined.
     * If either number is zero, returns 0 as the LCM of 0 and any other number is 0.
     * @return LCM of the two numbers, or -1 if either number is negative, or 0 if either number is zero.
     */
    public int calculateLCM() {
        // TODO: Write your code here
        if(number1<0||number2<0){
            return -1;
        }
        if(number1==0||number2==0){
            return 0;
        }
        int max=Math.max(number1,number2);
        int lcm=max;
        
        while(true){
            boolean isLcm=lcm%number1==0 && lcm%number2==0;
            if(isLcm){
                return lcm;
            }
            lcm+=max; //์–ด์ฐจํ”ผ ๊ณตํ†ต
        }
        
    }
}

 

์ฝ”๋”ฉ ์˜ˆ์ œ: ์–ด๋–ค ์ˆ˜์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜(GCD)

public class BiNumber {
    private int number1;
    private int number2;

    public int getNumber1() {
        return number1;
    }

 
    public int getNumber2() {
        return number2;
    }

    public int calculateGCD() {
        // Write your code here
        if(number1<0||number2<0){
            return 1;
        }
        if(number1==0||number2==0){
            return 0;
        }
        if(number1==number2){
            return number1;
        }
        
        int min=Math.min(number1,number2);
        
        for(int i=min;i>0;i--){
            if(number1%i==0 && number2%i==0){
                return i;
            }
        }
            return -1;
        }
        
      
        
    }
}

 

์ฐธ์กฐ๋ณ€์ˆ˜

๐Ÿ‘‰๐Ÿป Heap: Location+object

๐Ÿ‘‰๐Ÿป Stack: Location+Value+variable-name

int i=5;

Animal dog = new Animal(12);
Animal cat = new Animal(15);

Animal ref=cat; //cat๊ณผ ๊ฐ™์€ ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง
Animal dog2 = new Animal(12); //dog์™€ ๋‹ค๋ฅธ ref์ฃผ์†Œ๋ฅผ ๊ฐ€์ง

cat==dog; //false
cat==ref; //true
dog==dog2; //false

๋ณ€์ˆ˜ i, dog๋ผ๋Š” ์ธ์Šคํ„ด์Šค๋Š” Stack์— ์ €์žฅ๋˜๋Š”๋ฐ , ์ด๋•Œ dog์— ๋Œ€ํ•œ ๊ฐ’์€๊ฐ์ฒด๊ฐ€ ์ €์žฅ๋œ ๊ฒฝ๋กœ์˜ ์ฐธ์กฐ ์ •๋ณด (location=1=์ฐธ์กฐ๋ณ€์ˆ˜)๊ฐ€ ๊ฐ™์ด ์ €์žฅ๋œ๋‹ค.

 

Animal nothing; //ref์ฃผ์†Œ=null

nothing=cat; //cat์˜ ref์ฃผ์†Œ๊ฐ€ copy

์ฐธ์กฐ๋ณ€์ˆ˜์˜ ==์€ ๊ฐ์ฒด๊ฐ€ ๊ฐ™์€์ง€๋ฅผ ๋น„๊ตํ•œ๋‹ค. (ref์ฃผ์†Œ)

 

 

nothing.id=10;

 

cat.id๋„ 10์ด ๋œ๋‹ค. nothing์ด ๊ฐ€๋ฆฌํ‚ค๋Š” 1C์— ์žˆ๋Š” ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜์–ด๋ฒ„๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์—

โญ๏ธ ์ฐธ์กฐ๋ณ€์ˆ˜๋ฅผ ๋ณต์‚ฌํ• ๋•Œ, ๋ณต์‚ฌ๋œ๊ฒƒ์€ ๊ฐ์ฒด๊ฐ€ ์ €์žฅ๋œ ๊ฒฝ๋กœ์ด๋‹ค!

→ ๋ณต์‚ฌํ•œ(nothing)์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋ฉด ์›๋ณธ์ธ(cat)์˜ ๊ฐ’๊นŒ์ง€ ๊ฐ™์ด ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒƒ → mutable

 

int j=i;  //j=5
j=6;      //j=6, i=5

์›์‹œํ˜•์ธ ๋ณ€์ˆ˜๋Š” copyํ•ด๋„, ์›๋ณธ์˜ i๊ฐ’์€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š”๋‹ค → immutable (๊ฐ’์„ copyํ•˜๊ธฐ ๋•Œ๋ฌธ)!