๋ณ€์ˆ˜(variable)
๐Ÿ’ก
Garbage Collection : garbage๊ฐ€ ๋œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋น„์›Œ์ฃผ๋Š” ๊ฒƒ
  • ( โžก๏ธ ์ž๋™์œผ๋กœ ์ง„ํ–‰ํ•˜๋Š”)Managed Program : Java, Python
  • ( โžก๏ธ ์ˆ˜๋™์œผ๋กœ ์ง„ํ–‰ํ•ด์•ผํ•˜๋Š”)Unmanaged Program : C, Fortran
  • ๋ฉ”๋ชจ๋ฆฌ ๋‚ด์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ณต๊ฐ„(์˜ ์œ„์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ์Œ)
  • ํ•˜๋‚˜์˜ ๊ฐ’์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๊ณต๊ฐ„
  • ์ ์ ˆํ•œ ํƒ€์ž…์œผ๋กœ ์‚ฌ์šฉ
์„ ์–ธ๊ณผ ์ €์žฅ
์„ ์–ธ
๋ณ€์ˆ˜ํƒ€์ž… ๋ณ€์ˆ˜์ด๋ฆ„;

 

  • ex)
    int x;

 

์ €์žฅ
๋ณ€์ˆ˜์ด๋ฆ„ = ๊ฐ’;
  • ex)
    x = 5;

 

์„ ์–ธ + ์ €์žฅ
๋ณ€์ˆ˜ํƒ€์ž… ๋ณ€์ˆ˜์ด๋ฆ„ = ๊ฐ’;
  • ex)
    int x = 5;

 

๋ณ€์ˆ˜์˜ ํƒ€์ž…
์ผ๋ฐ˜ํ˜• (๊ธฐ๋ณธ ํ˜•,Primitive Type); ์‹ค์ œ ๊ฐ’(data)์„ ์ €์žฅ
์ข…๋ฅ˜\ํฌ๊ธฐ 1 byte 2 byte 4 byte 8 byte
๋…ผ๋ฆฌํ˜• boolean      
๋ฌธ์žํ˜•   char    
์ •์ˆ˜ํ˜• byte short int long
์‹ค์ˆ˜ํ˜•     float double
์ •์ˆ˜ํ˜•
  • ์ข…๋ฅ˜
    • int (defualt)
    • short
    • byte ; ํŒŒ์ผ ์ „์†ก ์‹œ์—๋‚˜ ๊ฐ€๋” ์‚ฌ์šฉ
    • long
  • ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ
    ํ•ด๋‹น ํƒ€์ž…์ด ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ’์˜ ๋ฒ”์œ„๋ฅผ ๋„˜์–ด ์„œ๋Š” ๊ฒƒ

    → ์˜ค๋ฅ˜ ๋‚˜์ง€ ์•Š๊ณ  ๋‹ค๋ฅธ ๊ฐ’์ด ๋‚˜์˜ด

    • Unsigned
      • ํ‘œํ˜„๊ฐ€๋Šฅ ์ตœ๋Œ€๊ฐ’ + 1 ⇒ ์ตœ์†Œ๊ฐ’
      • ํ‘œํ˜„๊ฐ€๋Šฅ ์ตœ์†Œ๊ฐ’ - 1 ⇒ ์ตœ๋Œ€๊ฐ’
    • Signed
      •  
์‹ค์ˆ˜ํ˜•
  • float
    • ํ‘œํ˜„ : X.Xf
  • double (default)
๋ฌธ์žํ˜•
  • char ; size 2byte
๋…ผ๋ฆฌํ˜•
  • Boolean

 

์ฐธ์กฐํ˜•(Reference Type); ๊ฐ์ฒด์˜ ์ฃผ์†Œ๋ฅผ ์ €์žฅ
  • ์—ด๊ฑฐํ˜•
  • ํด๋ž˜์Šคํ˜•
  • ๋ฐฐ์—ด
  • ์ธํ„ฐํŽ˜์ด์Šคํ˜•
์ƒ์ˆ˜(constant)
  • ํ•œ ๋ฒˆ๋งŒ ๊ฐ’์„ ์ €์žฅ ๊ฐ€๋Šฅํ•œ ๋ณ€์ˆ˜
๋ฆฌํ„ฐ๋Ÿด(literal)
๊ทธ ์ž์ฒด๋กœ ๊ฐ’์„ ์˜๋ฏธ ํ•˜๋Š” ๊ฒƒ
๋ฆฌํ„ฐ๋Ÿด์˜ ํƒ€์ž…๊ณผ ์ ‘๋ฏธ์‚ฌ
์ •์ˆ˜ํ˜•๊ณผ ์‹ค์ˆ˜ํ˜•์— ์—ฌ๋Ÿฌ ํƒ€์ž…์ด ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ ‘๋ฏธ์‚ฌ๋กœ ๋ฐ์ดํ„ฐ์˜ ํƒ€์ž… ๊ตฌ๋ถ„
๋ฌธ์ž์—ด ๊ฒฐํ•ฉ
  • ๋ง์…ˆ(+) ํ”ผ์—ฐ์‚ฐ์ž ์ค‘ ํ•œ์ชฝ์ด String์ด๋ฉด ํ•œ์ชฝ์„ ๋จผ์ € String์œผ๋กœ ๋ณ€ํ™˜ ํ›„ ๋‘ String์„ ๊ฒฐํ•ฉ ํ•จ.
  • ์—ฐ์‚ฐ๋ฐฉํ–ฅ : ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ
ํƒ€์ž… ๊ฐ„์˜ ๋ณ€ํ™˜
  • ์ˆซ์ž → ๋ฌธ์ž : ๋ฌธ์ž๋ฅผ ๋”ํ•œ๋‹ค

    ex) (char)(3 + ‘0’) ⇒ ‘3’

  • ๋ฌธ์ž → ์ˆซ์ž : ๋ฌธ์ž๋ฅผ ๋บ€๋‹ค

    ex) ์ˆซ์ž - ‘0’

  • ์ˆซ์ž → ๋ฌธ์ž์—ด : ๋นˆ ๋ฌธ์ž์—ด์„ ๋”ํ•œ๋‹ค

    ex) ์ˆซ์ž + “”

  • ๋ฌธ์ž์—ด → ์ˆซ์ž : parse ํ•จ์ˆ˜ ์‚ฌ์šฉ
    • ์ •์ˆ˜ํ˜•์œผ๋กœ : Integer.parseInt()
    • ์‹ค์ˆ˜ํ˜•์œผ๋กœ : Double.parseDouble()
  • ๋ฌธ์ž์—ด → ๋ฌธ์ž : charAt(0) ํ•จ์ˆ˜ ์‚ฌ์šฉ

    ex) “3”.charAt(0) ⇒ ‘3’

  • ๋ฌธ์ž → ๋ฌธ์ž์—ด : ๋นˆ ๋ฌธ์ž์—ด์„ ๋”ํ•œ๋‹ค

    ex) ‘3’ + “” ⇒ “3”

ํ˜•๋ณ€ํ™˜ ์—ฐ์‚ฐ์ž ์ด์šฉ
ํ˜•๋ณ€ํ™˜ : ๋ณ€์ˆ˜ ๋˜๋Š” ์ƒ์ˆ˜์˜ ํƒ€์ž…์„ ๋‹ค๋ฅธ ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ ํ•˜๋Š” ๊ฒƒ
  • ์‚ฌ์šฉ
    (ํƒ€์ž…)ํ”ผ์—ฐ์‚ฐ์ž;
    double d = 85.4;
    int score = (int)d;
  • ์˜ˆ์‹œ
    ๋ณ€ํ™˜ ์ˆ˜์‹ ๊ฒฐ๊ณผ
    int → char (char)65 ‘A'
    char → int (int)'A' 65
    float → int (int)1.6f 1
    int → float (float)10 10.0f
์ž๋™ ํ˜•๋ณ€ํ™˜
๊ธฐ์กด์˜ ๊ฐ’์„ ์ตœ๋Œ€ํ•œ ๋ณด์กดํ•  ์ˆ˜ ์žˆ๋Š” ํƒ€์ž…์œผ๋กœ ์ž๋™ ๋ณ€ํ™˜

โœ๏ธ๋ฐ˜๋Œ€ ๋ฐฉํ–ฅ์œผ๋กœ์˜ ํ˜• ๋ณ€ํ™˜์€ ํ˜•๋ณ€ํ™˜ ์—ฐ์‚ฐ์ž๋ฅผ ์จ์•ผ ํ•œ๋‹ค.

์„ ์–ธ ์œ„์น˜์— ๋”ฐ๋ฅธ ๋ณ€์ˆ˜์˜ ์ข…๋ฅ˜
๋ณ€์ˆ˜ ์ข…๋ฅ˜ ์„ ์–ธ ์œ„์น˜ ์ƒ์„ฑ ์‹œ๊ธฐ ์„ค๋ช… ์„ ์–ธ ์‚ฌ์šฉ
๋ฉค๋ฒ„๋ณ€์ˆ˜ ํด๋ž˜์Šค ๋ณ€์ˆ˜ class variable ํด๋ž˜์Šค ์˜์—ญ ํด๋ž˜์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐˆ ๋•Œ (๊ฐ์ฒด ์ƒ์„ฑ ์—†์ด ์‚ฌ์šฉ ๊ฐ€๋Šฅ) ๋ชจ๋“  ์ธ์Šคํ„ด์Šค๊ฐ€ ๊ณตํ†ต๋œ ์ €์žฅ ๊ณต๊ฐ„์„ ๊ณต์œ ํ•˜๋Š” ๋ณ€์ˆ˜๋กœ ๋ชจ๋“ ์ธ์Šคํ„ด์Šค์—์„œ ๊ฐ™์€ ๊ฐ’์„ ๊ฐ€์ง static ๋ณ€์ˆ˜ํ˜• ๋ณ€์ˆ˜๋ช…; ํด๋ž˜์Šค๋ช….๋ณ€์ˆ˜๋ช…
๋ฉค๋ฒ„๋ณ€์ˆ˜ ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜ instance variable ํด๋ž˜์Šค ์˜์—ญ ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋˜์—ˆ์„ ๋•Œ ์ธ์Šคํ„ด์Šค๋งˆ๋‹ค ๋ณ„๋„์˜ ์ €์žฅ๊ณต๊ฐ„์„ ๊ฐ€์ง€๋ฏ€๋กœ ์„œ๋กœ ๋‹ค๋ฅธ ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค. ๋ณ€์ˆ˜๋ช… ๋ณ€์ˆ˜ํ˜•; ๊ฐ์ฒด๋ช….๋ณ€์ˆ˜์˜
์ง€์—ญ ๋ณ€์ˆ˜ local variable ํด๋ž˜์Šค ์™ธ์˜ ์˜์—ญ (๋ฉ”์„œ๋“œ, ์ƒ์„ฑ์ž, ์ดˆ๊ธฐํ™” ๋ธ”๋ก ๋‚ด๋ถ€) ๋ณ€์ˆ˜ ์„ ์–ธ๋ฌธ์ด ์ˆ˜ํ–‰๋˜์—ˆ์„ ๋•Œ ์ง€์—ญ๋ณ€์ˆ˜๊ฐ€ ์„ ์–ธ๋œ ๋ธ”๋Ÿญ{}์•ˆ์—์„œ๋งŒ ์‚ฌ์šฉ๊ฐ€๋Šฅ, ๋ธ”๋Ÿญ์„ ๋ฒ—์–ด๋‚˜๋ฉด ์†Œ๋ฉธ ๋ณ€์ˆ˜๋ช… ๋ณ€์ˆ˜ํ˜•; ๋ณ€์ˆ˜๋ช…
class ExampleClass{
	int intEx;
	static int c_intEx;
	
	void ExampleMethod() {
		int intLocal = 0;
	}
}

 

  • inEx ⇒ ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜
  • c_intEx ⇒ ํด๋ž˜์Šค ๋ณ€์ˆ˜
  • intLocal ⇒ ์ง€์—ญ๋ณ€์ˆ˜

 

๋ณ€์ˆ˜์˜ ์ดˆ๊ธฐํ™”
  • ๋ฉค๋ฒ„๋ณ€์ˆ˜
    • ์ž๋™ ์ดˆ๊ธฐํ™”
    • ๋ช…์‹œ์  ์ดˆ๊ธฐํ™”
      • ๋Œ€์ž… ์—ฐ์‚ฐ์ž(=) ์ด์šฉ
        int A = 4;  //๊ธฐ๋ณธํ˜• ๋ณ€์ˆ˜ ์ดˆ๊ธฐํ™”
        Example e = new Example();  //์ฐธ์กฐํ˜• ๋ณ€์ˆ˜
    • ์ดˆ๊ธฐํ™” ๋ธ”๋Ÿญ
      • {} : ์ธ์Šคํ„ด์Šค ์ดˆ๊ธฐํ™” ๋ธ”๋Ÿญ
      • static {} : ํด๋ž˜์Šค ์ดˆ๊ธฐํ™” ๋ธ”๋Ÿญ
    • ์ƒ์„ฑ์ž
      • ์ธ์Šคํ„ด์Šค๋ณ€์ˆ˜ ์ดˆ๊ธฐํ™”
  • ์ง€์—ญ๋ณ€์ˆ˜๋Š” ์‚ฌ์šฉ์ „ ๋ฐ˜๋“œ์‹œ ์ง์ ‘ ์ดˆ๊ธฐํ™” ํ•ด์ค˜์•ผ ํ•จ
์ ‘๊ทผ ์ œํ•œ์ž
private
์™ธ๋ถ€์—์„œ ํด๋ž˜์Šค ๋ณ€์ˆ˜์— ์ง์ ‘ ์ ‘๊ทผ โŒ ์ƒ์†๋ฐ›์€ ํด๋ž˜์Šค์—์„œ๋„ ์ง์ ‘ ์ ‘๊ทผ โŒ ํด๋ž˜์Šค์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด์„œ๋งŒ ์ ‘๊ทผ โญ•
  • private ํด๋ž˜์Šค๋ณ€์ˆ˜์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•(๋ฉ”์†Œ๋“œ)
    • Getter Method
      • ํด๋ž˜์Šค ๋ณ€์ˆ˜์˜ ๋ฐ์ดํ„ฐ(๊ฐ’) ์ฝ๊ธฐ/๋ถˆ๋Ÿฌ์˜ค๊ธฐ
      public int getA(){
      	return this.a;
      }

       

      ๐Ÿ“Œ
      ํ†ต์ƒ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์ ‘๊ทผ์ œํ•œ๋œ ํด๋ž˜์Šค๋ณ€์ˆ˜๋ฅผ ์ฝ๋Š” ๋ฉ”์†Œ๋“œ ์ด๋ฆ„ get์ฒซ๊ธ€์ž๋ฅผ๋Œ€๋ฌธ์ž๋กœ์“ดํด๋ž˜์Šค๋ณ€์ˆ˜๋ช…

       

    • Setter Method
      • ํด๋ž˜์Šค ๋ณ€์ˆ˜์˜ ๊ฐ’(๋ฐ์ดํ„ฐ) ์“ฐ๊ธฐ
      public void setA(int a){
      	this.a = a;
      }
      ๐Ÿ“Œ
      ํ†ต์ƒ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์ ‘๊ทผ์ œํ•œ๋œ ํด๋ž˜์Šค๋ณ€์ˆ˜๋ฅผ ์ฝ๋Š” ๋ฉ”์†Œ๋“œ ์ด๋ฆ„ setํด๋ž˜์Šค๋ช…ํด๋ž˜์Šค์ฒซ๊ธ€์ž๋ฅผ๋Œ€๋ฌธ์ž๋กœ์“ดํด๋ž˜์Šค๋ณ€์ˆ˜๋ช…
default
- ๋™์ผํ•œ ํŒจํ‚ค์ง€๋‚ด์˜ ํด๋ž˜์Šค๋“ค๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅ - ์ƒ๋žต ๊ฐ€๋Šฅ - ๋™์ผํ•œ ํŒจํ‚ค์ง€ ๋‚ด์—์„œ๋Š” public๊ณผ ๊ฐ™์Œ
public
- ๋ชจ๋“  ์™ธ๋ถ€ ์ฝ”๋“œ์—์„œ ์ ‘๊ทผ ๊ฐ€๋Šฅ
protected
๊ฐ™์€ ํŒจํ‚ค์ง€ ๋‚ด์˜ ํด๋ž˜์Šค์—์„œ ์ ‘๊ทผโญ• ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์— ์žˆ๋”๋ผ๋„ ์ƒ์†๋ฐ›์€ ํด๋ž˜์Šค์—์„œ๋Š” ์ ‘๊ทผ โญ• ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์˜ ์ƒ์†๋ฐ›์ง€ ์•Š์€ ํด๋ž˜์Šค์—์„œ ์ ‘๊ทผ โŒ

 

๋ฌธ์ž์™€ ๋ฌธ์ž์—ด(String)
๋ฌธ์ž
์ •์˜
char ch = 'A';
  • ์ž‘์€ ๋”ฐ์˜ดํ‘œ’ , ‘์‚ฌ์šฉ
  • ๊ธ€์ž ํ•˜๋‚˜ ๋งŒ ๊ฐ€๋Šฅ
  • ๋นˆ๋ฌธ์ž ์„ ์–ธ ๋ถˆ๊ฐ€ ‘’;
๋ฌธ์ž์—ด
์ •์˜
String s1 = "AB";
๋˜๋Š”
String s2 = new String("AB");

 

  • ํฐ๋”ฐ์˜ดํ‘œ “, “์‚ฌ์šฉ
  • ๋นˆ๋ฌธ์ž์—ด ์„ ์–ธ ๊ฐ€๋Šฅ “”;
์—ฐ์‚ฐ

โš ๏ธ์™ผ์ชฝ๋ถ€ํ„ฐ ์ง„ํ–‰ ๋˜๋ฏ€๋กœ ์ˆœ์„œ์— ๋”ฐ๋ผ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ค๋ฆ„

  • ex)
    "" + 7 + 7 -> "7" + 7 -> "7" + "7" -> "77"
    7 + 7 + "" -> 14 + "" -> "14" + "" -> "14"
๋ฌธ์ž์—ด + any_type ⇒ ๋ฌธ์ž์—ด
n
์ž…๋ ฅ ๋ฐ›๊ธฐ

import java.util.Scanner;	//scannerํด๋ž˜์Šค์žˆ๋Š” lib

//main method๋‚ด //
public class Scanner_01 {

	public static void main(String[] args) {

			Scanner scanner = new Scanner(System.in);	//Scanner ํด๋ž˜์Šค์˜ ๊ฐ์ฒด ์ƒ์„ฑ
			
			String input = scanner.nextLine();
๋ณ€์ˆ˜์˜ ๊ธฐ๋ณธ ๊ฐ’
์ž๋ฃŒํ˜• ๊ธฐ๋ณธ๊ฐ’
boolean FALSE
char ‘\u0000'
byte, short, int 0
long 0L
float 0.0f
double 0.0d or 0.0
์ฐธ์กฐํ˜• null
๋ฐ˜์‘ํ˜•

๊ฐœ๋… : ๋ฌผ๋ฆฌ์ ์œผ๋กœ ๋–จ์–ด์ ธ ์žˆ๋Š” ๋…ธ๋“œ๋“ค์ด ๋‹ค์Œ ๋…ธ๋“œ์˜ ์ฃผ์†Œ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์„œ ์—ฐ๊ฒฐ๋˜๋Š” ํ˜•ํƒœ
vs ๋ฐฐ์—ด : ๋ฌผ๋ฆฌ์ ์œผ๋กœ ํ•œ๊ณต๊ฐ„์— ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋งŒํผ์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด ํ• ๋‹น ๋˜์–ด ์žˆ์Œ.
๋‹จ์  : ๋…ธ๋“œ์˜ ์ฃผ์†Œ๊ฐ’์„ ๋”ฐ๋ผ ์ ‘๊ทผํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ ‘๊ทผ์†๋„๊ฐ€ ๋А๋ฆด ์ˆ˜ ์žˆ์Œ
์žฅ์  : ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ• ๋•Œ ํ•œ๋ถ€๋ถ„๋งŒ ๊ฐ€์ง„ ์ฃผ์†Œ๊ฐ’์„ ๋ณ€๊ฒฝํ•ด์ฃผ๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋น„๊ต์  ๊ฐ„๋‹จ
vs ๋ฐฐ์—ด : ์›์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฐฐ์—ด ์ „์ฒด์˜ ๊ณต๊ฐ„์„ ๋‹ค์‹œ ํ• ๋‹น ํ•ด์•ผํ•˜๊ธฐ ๋–„๋ฌธ์— ๋ณต์žก
=> ํฌ๊ธฐ๊ฐ€ ์ •ํ•ด์ง€์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋“ค, ์ถ”๊ฐ€ ์‚ญ์ œ๊ฐ€ ์žฆ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ๋•Œ ์šฉ์ดํ•˜๋‹ค.

๋‹จ๋ฐฉํ–ฅ/์–‘๋ฐฉํ–ฅ Linked List

๋‹จ๋ฐฉํ–ฅ : ๊ฐ ๋…ธ๋“œ์— ๋‹ค์Œ ๋…ธ๋“œ์— ๋Œ€ํ•œ ์ •๋ณด๋งŒ ์žˆ์–ด์„œ ์ด์ „ ๋…ธ๋“œ๋กœ ์ด๋™ํ•  ์ˆ˜ ์—†๊ณ  ํ•œ์ชฝ ๋ฐฉํ–ฅ์œผ๋กœ๋งŒ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” Linked List

⇒ ๊ฒ€์ƒ‰ ์‹œ์— ๊ฐ€์žฅ ์•ž์˜ ๋…ธ๋“œ๋ถ€ํ„ฐ ํ•œ๊ฐœ์˜ ๋…ธ๋“œ ์”ฉ ์ด๋™ํ•˜๋ฉด์„œ ๊ฒ€์ƒ‰์„ ์ˆ˜ํ–‰ํ•จ.

์–‘๋ฐฉํ–ฅ : ๊ฐ ๋…ธ๋“œ์˜ ์ „ํ›„ ๋…ธ๋“œ์˜ ์ฃผ์†Œ๋ฅผ ๋ชจ๋‘ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” Linked List

⇒ ๊ฐ€์žฅ ๋์— ๋…ธ๋“œ๋ฅผ ์‚ฝ์ผ ํ•  ๋•Œ ์ œ์ผ ์•ž์˜ ๋…ธ๋“œ๋ถ€ํ„ฐ ์ฐพ์•„๊ฐ€์•ผ ํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€์„ ์ค„์ผ ์ˆ˜ ์žˆ์Œ.

๋‹จ๋ฐฉํ–ฅ Linked List๋Š” ์ฒซ ๋…ธ๋“œ์˜ ์ฃผ์†Œ๋งŒ์„ ์ €์žฅํ•˜๊ณ  ์–‘๋ฐฉํ–ฅ Linked List๋Š” ์ฒ˜์Œ๊ณผ ๋ ๋…ธ๋“œ์˜ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•œ๋‹ค.

๊ณต๊ฐ„์˜ ํšจ์œจ์„ฑ์„ ๊ณ ๋ คํ•ด์„œ ํ•„์š”ํ•œ ํ˜•ํƒœ๋ฅผ ์ด์šฉํ•˜๋Š”๊ฒƒ์ด ์ข‹๋‹ค.

๋ฐ˜์‘ํ˜•

Big O (๋น…์˜ค)

์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์„ฑ๋Šฅ์„ ์ˆ˜ํ•™์ ์œผ๋กœ ํ‘œ๊ธฐํ•œ ๊ฒƒ

ํŠน์ง•

  • Big-Oํ‘œ๊ธฐ๋ฒ•์„ ์ด์šฉํ•˜๋ฉด ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์‹œ๊ฐ„·๊ณต๊ฐ„ ๋ณต์žก๋„๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • Big-O ํ‘œ๊ธฐ๋ฒ•์€ ์‹ค์ œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ˆ˜ํ–‰๋˜๋Š” Running Time์„ ํ‘œ๊ธฐํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋ฐ์ดํ„ฐ์˜ ์ฆ๊ฐ€์— ๋”ฐ๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์„ฑ๋Šฅ์„ ์˜ˆ์ธกํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ƒ์ˆ˜๋Š” ๋ฌด์‹œ๋œ๋‹ค.

ํ‘œ๊ธฐ ์ข…๋ฅ˜

1) O(1)

: ์ž…๋ ฅ ๋ฐ์ดํ„ฐ ํฌ๊ธฐ์— ๊ด€๊ณ„ ์—†์ด ์ผ์ •ํ•œ ์‹œ๊ฐ„์ด ์†Œ์š”๋จ.

ex)

Example (int[] n) {
    return (n[0] == 0)? true:false;
}

2) O(n)

: ์ž…๋ ฅ ๋ฐ์ดํ„ฐ ํฌ๊ธฐ์— ๋น„๋ก€ํ•ด์„œ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์ด ์ฆ๊ฐ€ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜

ex) ๋‹จ์ผ for๋ฌธ

Example (int[] n) {
    for(int i = 0; i < n.length; i++){
        System.out.print(i);
    }
}

3) O(n²)

: ์ž…๋ ฅ ๋ฐ์ดํ„ฐ ํฌ๊ธฐ์˜ ์ œ๊ณฑ์— ๋น„๋ก€ํ•ด์„œ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์ด ์ฆ๊ฐ€ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜

ex) ์ด์ค‘ for๋ฌธ

Example (int[] n) {
    for(int i = 0; i < n.length; i++){
            for(int j = 0; j < n.length; j++){
                System.out.print(i+j);
            }
    }
}

3-1) O(nm)

: ์ž…๋ ฅ๋˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋‹ค๋ฅด๋‹ค๋ฉด, ๊ฐ ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ์— ์˜ํ–ฅ์„ ๋ฐ›๊ธฐ ๋•Œ๋ฌธ์— ๋”ฐ๋กœ ํ‘œ๊ธฐํ•ด์ค˜์•ผ ํ•จ.

Example (int[] n, int[] m) {
    for(int i = 0; i < n.length; i++){
            for(int j = 0; j < m.length; j++){
                System.out.print(i+j);
            }
    }
}

 

4) O(n³)

: ์ž…๋ ฅ ๋ฐ์ดํ„ฐ ํฌ๊ธฐ์˜ ์„ธ์ œ๊ณฑ์— ๋น„๋ก€ํ•ด์„œ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์ด ์ฆ๊ฐ€ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜

ex) ์‚ผ์ค‘ for๋ฌธ

Example (int[] n) {
    for(int i = 0; i < n.length; i++){
            for(int j = 0; j < n.length; j++){
                for(int k = 0; k < n.length; k++){
                    System.out.print(i + j + k);
                }
            }
    }
}

 

5) O(2โฟ) ๋˜๋Š” O(mโฟ)

: ๋ฐ์ดํ„ฐ์˜ ์ฆ๊ฐ€์— ๋”ฐ๋ผ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์ด ํ˜„์ €ํ•˜๊ฒŒ ์ฆ๊ฐ€ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜

ex) Fibonacci Numbers (ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด)

Example (int n, int[] r) {
    if (n <= 0) return 0;
    else if (n == 1) return r[n] = 1;
    return r[n] = Example(n-1, r) + Example(n-2, r);
}

5) O(log n)

: ์—ฐ์‚ฐ์„ ๊ฑฐ๋“ญํ•  ๋•Œ ๋งˆ๋‹ค ์—ฐ์‚ฐ์˜ ๋Œ€์ƒ์ด ๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์–‘์ด ์ค„์–ด๋“œ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜. ๋ฐ์ดํ„ฐ ์–‘์˜ ์ฆ๊ฐ€์— ๋น„ํ•ด ์†Œ์š” ์‹œ๊ฐ„์˜ ์ฆ๊ฐ€ ํญ์ด ํฌ์ง€ ์•Š์Œ.

ex) binary search (์ด์ง„ ํƒ์ƒ‰)

Example(int key, int[] arr, start, end){
    if(start > end) return -1;
    int m = (start + end) / 2l
    if (arr[m] == k) return m;
        else if(arr[m] > key) return Example(key, arr, start, m-1);
        else return Example(key, arr, m+1, end);
}

6) O(sqrt(n))

: n²๊ฐœ์˜ ๋ฐ์ดํ„ฐ ์ค‘ n๊ฐœ์˜ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด์„œ ๋งŒ ์—ฐ์‚ฐํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Big O ๊ทธ๋ž˜ํ”„ ๋น„๊ต

๋ฐ˜์‘ํ˜•

'Backgrounds > Algorithm' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

์ž๋ฃŒ๊ตฌ์กฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ | Linked List  (0) 2023.08.01

์ˆ˜์ œ๋น„ 2023 ๊ธฐ์ค€

 

2023 ์ˆ˜์ œ๋น„ ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ ์‹ค๊ธฐ 1+2๊ถŒ ์„ธํŠธ | NCS ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์ˆ ์‚ฌ ์—ฐ๊ตฌํšŒ - ๊ต๋ณด๋ฌธ๊ณ 

2023 ์ˆ˜์ œ๋น„ ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ ์‹ค๊ธฐ 1+2๊ถŒ ์„ธํŠธ | ๋น„์ „๊ณต์ž๋ฅผ ์œ„ํ•œ ์ตœ๊ณ ์˜ ์ˆ˜ํ—˜์„œ!!ใ† 2023๋…„ ํ•ฉ๊ฒฉ์„ ์œ„ํ•œ NCS ๊ธฐ๋ฐ˜ ๋ชจ์˜๊ณ ์‚ฌ ์ˆ˜๋กใ† ๊ถ๊ทน์˜ ์•”๊ธฐ๋น„๋ฒ•(๋‘์Œ์Œค)๊ณผ ํ•™์Šต Point ์ˆ˜๋กใ† ์ตœ์ ์˜ ๋งž์ถค ํ•™์Šต์„ ์œ„

product.kyobobook.co.kr

๋ฐ˜์‘ํ˜•

| TABLE |

 CREATE USER 
session
C##
๋น„๋ฐ€๋ฒˆํ˜ธ โ€œโ€

 

| TABLESPACE |

ํ…Œ์ด๋ธ” ์ŠคํŽ˜์ด์Šค ์ƒ์„ฑํ•˜๊ธฐ  (ํ…Œ์ด๋ธ” ์ŠคํŽ˜์ด์Šค์™€ ๋ฐ์ดํ„ฐํŒŒ์ผ์˜ ์ด๋ฆ„์ด ๊ฐ™์„ ํ•„์š”๋Š” ์—†์Œ)

CREATE TABLESPACE example
	DATAFILE 'C:\ORACLE\DATA\example.DBF' 
    SIZE 500M AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED 
    DEFAULT STORAGE(INITIAL 128K NEXT 64K PCTINCREASE 10);

 

๋ฐ˜์‘ํ˜•

'DBMS > Oracle' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Oracle] ORA-01033 ์—๋Ÿฌ ๋ฐœ์ƒ ์ž„์˜๋กœ datafile ์‚ญ์ œํ•ด์„œ ๋ฐœ์ƒ  (0) 2023.06.10

https://adbancedteam.tistory.com/148

 

[Admin] ORA-01157, ORA-01110 ์žฅ์•  ํ•ด๊ฒฐ ๋ฐฉ์•ˆ

1. ๋ฌธ์ œ ๋ฐœ์ƒ - DB ์˜คํ”ˆ ์‹œ UNDO ๋ฐ์ดํ„ฐ ํŒŒ์ผ ์—๋Ÿฌ ๋ฐœ์ƒ SQL> startup ORACLE instance started. Total System Global Area 422670336 bytes Fixed Size 1344616 bytes Variable Size 314575768 bytes Database Buffers 100663296 bytes Redo Buffers 6086656

adbancedteam.tistory.com

 

๋ฐ˜์‘ํ˜•

'DBMS > Oracle' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Oracle sql ๋ชจ์Œ / ์ •๋ฆฌ (TABLE, TABLESPACE, USER)  (0) 2023.06.20

 

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

๋”๋ณด๊ธฐ

๋ฌธ์ œ ์„ค๋ช…
๋ฐฐ์—ด array์˜ i๋ฒˆ์งธ ์ˆซ์ž๋ถ€ํ„ฐ j๋ฒˆ์งธ ์ˆซ์ž๊นŒ์ง€ ์ž๋ฅด๊ณ  ์ •๋ ฌํ–ˆ์„ ๋•Œ, k๋ฒˆ์งธ์— ์žˆ๋Š” ์ˆ˜๋ฅผ ๊ตฌํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด array๊ฐ€ [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3์ด๋ผ๋ฉด

array์˜ 2๋ฒˆ์งธ๋ถ€ํ„ฐ 5๋ฒˆ์งธ๊นŒ์ง€ ์ž๋ฅด๋ฉด [5, 2, 6, 3]์ž…๋‹ˆ๋‹ค.
1์—์„œ ๋‚˜์˜จ ๋ฐฐ์—ด์„ ์ •๋ ฌํ•˜๋ฉด [2, 3, 5, 6]์ž…๋‹ˆ๋‹ค.
2์—์„œ ๋‚˜์˜จ ๋ฐฐ์—ด์˜ 3๋ฒˆ์งธ ์ˆซ์ž๋Š” 5์ž…๋‹ˆ๋‹ค.
๋ฐฐ์—ด array, [i, j, k]๋ฅผ ์›์†Œ๋กœ ๊ฐ€์ง„ 2์ฐจ์› ๋ฐฐ์—ด commands๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, commands์˜ ๋ชจ๋“  ์›์†Œ์— ๋Œ€ํ•ด ์•ž์„œ ์„ค๋ช…ํ•œ ์—ฐ์‚ฐ์„ ์ ์šฉํ–ˆ์„ ๋•Œ ๋‚˜์˜จ ๊ฒฐ๊ณผ๋ฅผ ๋ฐฐ์—ด์— ๋‹ด์•„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

์ œํ•œ์‚ฌํ•ญ
array์˜ ๊ธธ์ด๋Š” 1 ์ด์ƒ 100 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
array์˜ ๊ฐ ์›์†Œ๋Š” 1 ์ด์ƒ 100 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
commands์˜ ๊ธธ์ด๋Š” 1 ์ด์ƒ 50 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
commands์˜ ๊ฐ ์›์†Œ๋Š” ๊ธธ์ด๊ฐ€ 3์ž…๋‹ˆ๋‹ค.
์ž…์ถœ๋ ฅ ์˜ˆ
array commands return
[1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3]
์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…
[1, 5, 2, 6, 3, 7, 4]๋ฅผ 2๋ฒˆ์งธ๋ถ€ํ„ฐ 5๋ฒˆ์งธ๊นŒ์ง€ ์ž๋ฅธ ํ›„ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค. [2, 3, 5, 6]์˜ ์„ธ ๋ฒˆ์งธ ์ˆซ์ž๋Š” 5์ž…๋‹ˆ๋‹ค.
[1, 5, 2, 6, 3, 7, 4]๋ฅผ 4๋ฒˆ์งธ๋ถ€ํ„ฐ 4๋ฒˆ์งธ๊นŒ์ง€ ์ž๋ฅธ ํ›„ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค. [6]์˜ ์ฒซ ๋ฒˆ์งธ ์ˆซ์ž๋Š” 6์ž…๋‹ˆ๋‹ค.
[1, 5, 2, 6, 3, 7, 4]๋ฅผ 1๋ฒˆ์งธ๋ถ€ํ„ฐ 7๋ฒˆ์งธ๊นŒ์ง€ ์ž๋ฆ…๋‹ˆ๋‹ค. [1, 2, 3, 4, 5, 6, 7]์˜ ์„ธ ๋ฒˆ์งธ ์ˆซ์ž๋Š” 3์ž…๋‹ˆ๋‹ค.

๋กœ์ง

1. commands ํ–‰์˜ ์ˆ˜ = answer ์›์†Œ ์ˆ˜

2. commands ๊ฐ ์—ด(0,1,2)๋Š” ๊ฐ™์€ ์—ญํ• ์„ ํ•˜๋Š” ๋งค๊ฐœ ๋ณ€์ˆ˜

3. ๋ฐ˜๋ณต์ž‘์—… ํ•จ์ˆ˜ํ™”

import java.util.*;

class Solution {
    public int[] solution(int[] array, int[][] commands) {
        
        //commands ํ–‰์˜ ๊ฐœ์ˆ˜์™€ ๊ฐ™์€ ํฌ๊ธฐ์˜ ๋ฐฐ์—ด answer ์„ ์–ธ
        int[] answer = new int[commands.length];
        
        //commands ๊ฐ ํ–‰x ๋งˆ๋‹ค 
        for(int x = 0; x<commands.length; x++){
            int[] temp;
            //๋ฐฐ์—ด์„ ์ƒ์„ฑ
            temp = Arrays.copyOfRange(array, commands[x][0]-1, commands[x][1]);
			//์ƒ์„ฑํ•œ ๋ฐฐ์—ด์„ ์ •๋ ฌ
            Arrays.sort(temp);
            //n ๋ฒˆ์งธ์˜ ์›์†Œ๋ฅผ answer์˜ ์›์†Œ๋กœ ๋‹ด์Œ
            answer[x] = temp[commands[x][2]-1];
        }
        return answer;
    }
}

 

Arrays.sort() vs Collections.sort() ์ค‘ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ณ ๋ ค Collections.sort() ๊ฐ€ ๋” ์ ์ ˆ?

 

2์ฐจ์› ๋ฐฐ์—ด์˜ .length => ํ–‰์˜ ๊ฐœ์ˆ˜ ๋ฐ˜ํ™˜

๋ฐ˜์‘ํ˜•
 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

๋”๋ณด๊ธฐ

๋ฌธ์ œ ์„ค๋ช…
๋ฐฐ์—ด arr๊ฐ€ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ๋ฐฐ์—ด arr์˜ ๊ฐ ์›์†Œ๋Š” ์ˆซ์ž 0๋ถ€ํ„ฐ 9๊นŒ์ง€๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ, ๋ฐฐ์—ด arr์—์„œ ์—ฐ์†์ ์œผ๋กœ ๋‚˜ํƒ€๋‚˜๋Š” ์ˆซ์ž๋Š” ํ•˜๋‚˜๋งŒ ๋‚จ๊ธฐ๊ณ  ์ „๋ถ€ ์ œ๊ฑฐํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋‹จ, ์ œ๊ฑฐ๋œ ํ›„ ๋‚จ์€ ์ˆ˜๋“ค์„ ๋ฐ˜ํ™˜ํ•  ๋•Œ๋Š” ๋ฐฐ์—ด arr์˜ ์›์†Œ๋“ค์˜ ์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด,

arr = [1, 1, 3, 3, 0, 1, 1] ์ด๋ฉด [1, 3, 0, 1] ์„ return ํ•ฉ๋‹ˆ๋‹ค.
arr = [4, 4, 4, 3, 3] ์ด๋ฉด [4, 3] ์„ return ํ•ฉ๋‹ˆ๋‹ค.
๋ฐฐ์—ด arr์—์„œ ์—ฐ์†์ ์œผ๋กœ ๋‚˜ํƒ€๋‚˜๋Š” ์ˆซ์ž๋Š” ์ œ๊ฑฐํ•˜๊ณ  ๋‚จ์€ ์ˆ˜๋“ค์„ return ํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”.

์ œํ•œ์‚ฌํ•ญ
๋ฐฐ์—ด arr์˜ ํฌ๊ธฐ : 1,000,000 ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜
๋ฐฐ์—ด arr์˜ ์›์†Œ์˜ ํฌ๊ธฐ : 0๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ  9๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ •์ˆ˜

์ž…์ถœ๋ ฅ ์˜ˆ


์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…
์ž…์ถœ๋ ฅ ์˜ˆ #1,2
๋ฌธ์ œ์˜ ์˜ˆ์‹œ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋กœ์ง

1. arr์˜ ๊ฐ ์›์†Œ๋ฅผ ์•ž์˜ ์›์†Œ์™€ ๋น„๊ตํ•ด์„œ ๋‹ค๋ฅผ๋•Œ๋งŒ ํ์— ๋‹ด๋Š”๋‹ค.

2. ํ์˜ ์›์†Œ๋ฅผ answer์— ๋‹ด๋Š”๋‹ค.

import java.util.*;

public class Solution {
    public int[] solution(int []arr) {
		//LinkedList queue ์ƒ์„ฑ
        Queue q = new LinkedList();
        
        //arr์˜ ์ฒซ๋ฒˆ์งธ ์›์†Œ๋Š” queue์— ๋‹ด์Œ
        q.offer(arr[0]);
         
        //arr ๋‘๋ฒˆ์งธ ์›์†Œ๋ถ€ํ„ฐ ์•ž์˜ ์›์†Œ์™€ ๋น„๊ตํ•ด์„œ ๋‹ค๋ฅผ๋•Œ๋งŒ queue์— ๋‹ด์Œ
        for(int i=1; i<arr.length; i++){
            if(arr[i] != arr[i-1]){
                 q.offer(arr[i]);
             }             
         }
         
        //queue์˜ ํฌ๊ธฐ๋งŒํผ answer ๋ฐฐ์—ด ์ •์˜
      	int[] answer = new int[q.size()];
 		
        //queue๊ฐ€ empty๋ ๋•Œ๊นŒ์ง€ answer ๋ฐฐ์—ด์— ๋‹ด์Œ
         for(int i = 0; !q.isEmpty(); i++){
             answer[i] = (int)q.poll();
         }
        return answer;
    }
}

 

๋ฐ˜์‘ํ˜•

https://chisel-evening-96b.notion.site/1-aee0d234d2dd4065914a0c8193ccb064?pvs=4 

 

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

๋”๋ณด๊ธฐ

๋ฌธ์ œ ์„ค๋ช…
๋‹น์‹ ์€ ํฐ์ผ“๋ชฌ์„ ์žก๊ธฐ ์œ„ํ•œ ์˜ค๋žœ ์—ฌํ–‰ ๋์—, ํ™ ๋ฐ•์‚ฌ๋‹˜์˜ ์—ฐ๊ตฌ์‹ค์— ๋„์ฐฉํ–ˆ์Šต๋‹ˆ๋‹ค. ํ™ ๋ฐ•์‚ฌ๋‹˜์€ ๋‹น์‹ ์—๊ฒŒ ์ž์‹ ์˜ ์—ฐ๊ตฌ์‹ค์— ์žˆ๋Š” ์ด N ๋งˆ๋ฆฌ์˜ ํฐ์ผ“๋ชฌ ์ค‘์—์„œ N/2๋งˆ๋ฆฌ๋ฅผ ๊ฐ€์ ธ๊ฐ€๋„ ์ข‹๋‹ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค.
ํ™ ๋ฐ•์‚ฌ๋‹˜ ์—ฐ๊ตฌ์‹ค์˜ ํฐ์ผ“๋ชฌ์€ ์ข…๋ฅ˜์— ๋”ฐ๋ผ ๋ฒˆํ˜ธ๋ฅผ ๋ถ™์—ฌ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐ™์€ ์ข…๋ฅ˜์˜ ํฐ์ผ“๋ชฌ์€ ๊ฐ™์€ ๋ฒˆํ˜ธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์—ฐ๊ตฌ์‹ค์— ์ด 4๋งˆ๋ฆฌ์˜ ํฐ์ผ“๋ชฌ์ด ์žˆ๊ณ , ๊ฐ ํฐ์ผ“๋ชฌ์˜ ์ข…๋ฅ˜ ๋ฒˆํ˜ธ๊ฐ€ [3๋ฒˆ, 1๋ฒˆ, 2๋ฒˆ, 3๋ฒˆ]์ด๋ผ๋ฉด ์ด๋Š” 3๋ฒˆ ํฐ์ผ“๋ชฌ ๋‘ ๋งˆ๋ฆฌ, 1๋ฒˆ ํฐ์ผ“๋ชฌ ํ•œ ๋งˆ๋ฆฌ, 2๋ฒˆ ํฐ์ผ“๋ชฌ ํ•œ ๋งˆ๋ฆฌ๊ฐ€ ์žˆ์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ด๋•Œ, 4๋งˆ๋ฆฌ์˜ ํฐ์ผ“๋ชฌ ์ค‘ 2๋งˆ๋ฆฌ๋ฅผ ๊ณ ๋ฅด๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด 6๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฒซ ๋ฒˆ์งธ(3๋ฒˆ), ๋‘ ๋ฒˆ์งธ(1๋ฒˆ) ํฐ์ผ“๋ชฌ์„ ์„ ํƒ
์ฒซ ๋ฒˆ์งธ(3๋ฒˆ), ์„ธ ๋ฒˆ์งธ(2๋ฒˆ) ํฐ์ผ“๋ชฌ์„ ์„ ํƒ
์ฒซ ๋ฒˆ์งธ(3๋ฒˆ), ๋„ค ๋ฒˆ์งธ(3๋ฒˆ) ํฐ์ผ“๋ชฌ์„ ์„ ํƒ
๋‘ ๋ฒˆ์งธ(1๋ฒˆ), ์„ธ ๋ฒˆ์งธ(2๋ฒˆ) ํฐ์ผ“๋ชฌ์„ ์„ ํƒ
๋‘ ๋ฒˆ์งธ(1๋ฒˆ), ๋„ค ๋ฒˆ์งธ(3๋ฒˆ) ํฐ์ผ“๋ชฌ์„ ์„ ํƒ
์„ธ ๋ฒˆ์งธ(2๋ฒˆ), ๋„ค ๋ฒˆ์งธ(3๋ฒˆ) ํฐ์ผ“๋ชฌ์„ ์„ ํƒ
์ด๋•Œ, ์ฒซ ๋ฒˆ์งธ(3๋ฒˆ) ํฐ์ผ“๋ชฌ๊ณผ ๋„ค ๋ฒˆ์งธ(3๋ฒˆ) ํฐ์ผ“๋ชฌ์„ ์„ ํƒํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ํ•œ ์ข…๋ฅ˜(3๋ฒˆ ํฐ์ผ“๋ชฌ ๋‘ ๋งˆ๋ฆฌ)์˜ ํฐ์ผ“๋ชฌ๋งŒ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์ง€๋งŒ, ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•๋“ค์€ ๋ชจ๋‘ ๋‘ ์ข…๋ฅ˜์˜ ํฐ์ผ“๋ชฌ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์œ„ ์˜ˆ์‹œ์—์„œ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ํฐ์ผ“๋ชฌ ์ข…๋ฅ˜ ์ˆ˜์˜ ์ตœ๋Œ“๊ฐ’์€ 2๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
๋‹น์‹ ์€ ์ตœ๋Œ€ํ•œ ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ ํฐ์ผ“๋ชฌ์„ ๊ฐ€์ง€๊ธธ ์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์ตœ๋Œ€ํ•œ ๋งŽ์€ ์ข…๋ฅ˜์˜ ํฐ์ผ“๋ชฌ์„ ํฌํ•จํ•ด์„œ N/2๋งˆ๋ฆฌ๋ฅผ ์„ ํƒํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค. N๋งˆ๋ฆฌ ํฐ์ผ“๋ชฌ์˜ ์ข…๋ฅ˜ ๋ฒˆํ˜ธ๊ฐ€ ๋‹ด๊ธด ๋ฐฐ์—ด nums๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, N/2๋งˆ๋ฆฌ์˜ ํฐ์ผ“๋ชฌ์„ ์„ ํƒํ•˜๋Š” ๋ฐฉ๋ฒ• ์ค‘, ๊ฐ€์žฅ ๋งŽ์€ ์ข…๋ฅ˜์˜ ํฐ์ผ“๋ชฌ์„ ์„ ํƒํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์•„, ๊ทธ๋•Œ์˜ ํฐ์ผ“๋ชฌ ์ข…๋ฅ˜ ๋ฒˆํ˜ธ์˜ ๊ฐœ์ˆ˜๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

์ œํ•œ์‚ฌํ•ญ
nums๋Š” ํฐ์ผ“๋ชฌ์˜ ์ข…๋ฅ˜ ๋ฒˆํ˜ธ๊ฐ€ ๋‹ด๊ธด 1์ฐจ์› ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค.
nums์˜ ๊ธธ์ด(N)๋Š” 1 ์ด์ƒ 10,000 ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜์ด๋ฉฐ, ํ•ญ์ƒ ์ง์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.
ํฐ์ผ“๋ชฌ์˜ ์ข…๋ฅ˜ ๋ฒˆํ˜ธ๋Š” 1 ์ด์ƒ 200,000 ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜๋กœ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
๊ฐ€์žฅ ๋งŽ์€ ์ข…๋ฅ˜์˜ ํฐ์ผ“๋ชฌ์„ ์„ ํƒํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์—ฌ๋Ÿฌ ๊ฐ€์ง€์ธ ๊ฒฝ์šฐ์—๋„, ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ํฐ์ผ“๋ชฌ ์ข…๋ฅ˜ ๊ฐœ์ˆ˜์˜ ์ตœ๋Œ“๊ฐ’ ํ•˜๋‚˜๋งŒ return ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

[๋กœ์ง]

1. ์ตœ๋Œ€๋กœ ๊ฐ€์ง€์ˆ˜๋Š” ๊ฐ€์ ธ๊ฐ€๋Š” ํฌ์ผ“๋ชฌ์ด ๋ชจ๋‘ ๋‹ค๋ฅธ ์ข…๋ฅ˜์ผ ๋•Œ๋‹ค.

2. N๋งˆ๋ฆฌ์˜ ํฌ์ผ“๋ชฌ ์ค‘ ์ค‘๋ณต๋˜๋Š” ์ข…๋ฅ˜๋Š” ์ œ๊ฑฐํ•˜๊ณ  ์ข…๋ฅ˜๋ณ„๋กœ ํ•˜๋‚˜์”ฉ๋งŒ ๋‚จ๊ฒจ์„œ ํฌ์ผ“๋ชฌ ์ข…๋ฅ˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•œ๋‹ค.

3. ํฌ์ผ“๋ชฌ ์ข…๋ฅ˜์˜ ๊ฐœ์ˆ˜์™€ ๊ฐ€์ ธ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ํฌ์ผ“๋ชฌ์˜ ๊ฐœ์ˆ˜๋ฅผ ๋น„๊ตํ•œ๋‹ค.

import java.util.*;

class Solution {
    public int solution(int[] nums) {
        int answer;
        
        //๊ฐ€์ ธ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ฐœ์ˆ˜ cnt
        int cnt = (nums.length)/2;  

        //nums์—์„œ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•œ ๋ฐฐ์—ด temp ์ƒ์„ฑ
        int[] temp = Arrays.stream(nums).distinct().toArray();
        
        //์ค‘๋ณต์ด ์ œ๊ฑฐ๋œ ๋ฐฐ์—ด temp์˜ ๊ธธ์ด = ํฌ์ผ“๋ชฌ์˜ ์ข…๋ฅ˜ ์ˆ˜ kind
        int kind = temp.length;

		//ํฌ์ผ“๋ชฌ์˜ ์ข…๋ฅ˜ ์ˆ˜๊ฐ€ ๊ฐ€์ ธ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ํฌ์ผ“๋ชฌ์˜ ์ˆ˜๋ณด๋‹ค ๋งŽ์œผ๋ฉด
        if(cnt <= kind) {	
            answer = cnt;	//๊ฐ€์ ธ๊ฐ€๋Š” ํฌ์ผ“๋ชฌ ์ข…๋ฅ˜๊ฐ€ ๋ชจ๋‘ ๋‹ค๋ฅผ๋•Œ ์ตœ๋Œ€ ์ข…๋ฅ˜
        } else {
            answer = kind;	//์•„๋‹ˆ๋ฉด ์ข…๋ฅ˜๋ณ„ ๊ฐ€์ ธ๊ฐ€๋Š” ๊ฒŒ ์ตœ๋Œ€ ์ข…๋ฅ˜
        }
        
        return answer;
    }
}

- ์ค‘๋ณต ์ œ๊ฑฐ๋ฅผ ์œ„ํ•ด Arrays.stream(arr).distinct()๋ฅผ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ  HashSet์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ!

๋ฐ˜์‘ํ˜•

ํ”„๋กœ์ ํŠธ ์ •์ƒ ์ž‘๋™ ์—ฌ๋ถ€ ํ™•์ธ

  • Spring boot๋‚ด์—์„œ ํ”„๋กœ์ ํŠธ๊ฐ€ ์ •์ƒ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธ ํ•จ

ํ”„๋กœ์ ํŠธ ๋นŒ๋“œ

  • ๋ช…๋ นํ”„๋กฌํ”„ํŠธ์—์„œ ํ”„๋กœ์ ํŠธ ํด๋”๋กœ ์ด๋™
>cd C:\\workspace-spring-tool-suite-4-4.18.1.RELEASE\\MyBoardSecurity
  • ํ”„๋กœ์ ํŠธ ๋นŒ๋“œ
C:\\workspace-spring-tool-suite-4-4.18.1.RELEASE\\MyBoardSecurity>**gradlew build**

⇒ํ”„๋กœ์ ํŠธ ํด๋” ๋‚ด \build\libs์— 2๊ฐœ์˜ jar ํŒŒ์ผ ์ƒ์„ฑ

์šฉ๋Ÿ‰ ํฐ jar ํŒŒ์ผ ์‹คํ–‰

C:\\workspace-spring-tool-suite-4-4.18.1.RELEASE\\BoardSecurity\\build\\libs>java -jar ํŒŒ์ผ์ด๋ฆ„.jar

localhost:8080 ์œผ๋กœ ์ ‘์†

๋ฐ˜์‘ํ˜•

+ Recent posts