# μ νκ²μ
written by sohyeon, hyemin π‘
# 1. μ νκ²μμ΄λ?
λ°°μ΄μμ κ²μνλ λ°©λ² μ€ κ°μ₯ κΈ°λ³Έμ μΈ μκ³ λ¦¬μ¦μ΄λ€.
μμκ° μ§μ λͺ¨μμΌλ‘ λμ΄μ λ°°μ΄μμμ κ²μμ
μνλ ν€ κ°μ κ°λ μμλ₯Ό λ§λ λκΉμ§ 맨 μλΆν° μμλλ‘ μμλ₯Ό κ²μνλ©΄ λλ€.
μμ°¨μ μΌλ‘ μμλ₯Ό λ°©λ¬ΈνκΈ° λλ¬Έμ μμ°¨κ²μ
μ΄λΌκ³ λ νλ€.
λ°°μ΄μμ κ° 2λ₯Ό μ νκ²μνλ μμ
μμ κ·Έλ¦Όμ κ²μμ μ±κ³΅ν κ²½μ°μ λλ€.
λ§μ½ ν€ κ°κ³Ό κ°μ κ°μ κ°μ§ μμκ° λ°°μ΄μ μλ€λ©΄ κ²μμ μ€ν¨ν κ² μ΄λ€.
μ΄ κ²½μ°μλ λμΌνκ² λ°°μ΄μ μμλ₯Ό 맨 μλΆν° μμλλ‘ κ²μνκ³
ν€ κ°κ³Ό κ°μ μμλ₯Ό λ§λμ§ λͺ»νμ± λ°°μ΄μ λμ μ§λκ°κ² λλ€.
# λ°°μ΄ κ²μμ μ’ λ£ μ‘°κ±΄
- κ²μν κ°μ λ°κ²¬νμ§ λͺ»νκ³ λ°°μ΄μ λμ μ§λκ° κ²½μ°
- κ²μν κ°κ³Ό κ°μ μμλ₯Ό λ°κ²¬ν κ²½μ°
# μμ μ½λ
class SeqSearch{
static int seqSearch(int[] a, int n, int key){
for(int i=0; i<n; i++)
if(a[i]==key)
return i;
return -1
}
public static void main(String[] args){
Scanner stdIn = new Scanner(System.in);
System.out.print("μμμ:" );
int num = stdIn.nextInt();
int[] x = new int[num];
for(int i=0; i<num; i++){
System.out.print("x["+i+"]:");
x[i] = stdIn.nextInt();
}
System.out.print("κ²μν κ°:");
int ky = stdIn.nextInt();
int idx = seqSearch(x,num,ky);
if(idx == -1)
System.out.println("κ·Έ κ°μ μμκ° μμ΅λλ€.");
else
System.out.println(ky+"μ(λ) x["+idx+"]μ μμ΅λλ€.");
}
}
# 2. 보μ΄λ²
μ ν κ²μμ λ°λ³΅ν λλ§λ€ μ’
λ£ μ‘°κ±΄μ λͺ¨λ νλ¨ν©λλ€.
μ’
λ£ μ‘°κ±΄μ κ²μ¬νλ λΉμ©μ 무μν μ μκΈ° λλ¬Έμ
μ΄ λΉμ©μ λ°μΌλ‘ μ€μ΄λ λ°©λ²μ΄ 보μ΄λ²
μ
λλ€.
# 보μ΄λ² μμ
κ²μμ μμνκΈ° μ μ κ²μνκ³ μ νλ ν€ κ°μ 맨 λ μμμ μ μ₯νλ€.
μ΄ μ μ₯νλ κ°μ 보μ΄(sentinel)
λΌκ³ νλ€.
λ³΄μ΄ κ°μ νμ©νλ―λ‘μ μλμ λ°μ΄ν°μ μ‘΄μ¬νμ§ μμλ 보μ΄κΉμ§ κ²μνλ©΄
λ°°μ΄ κ²μμ μ’
λ£ μ‘°κ±΄ μ€ κ²μν κ°μ λ°κ²¬νμ§ λͺ»νκ³ λ°°μ΄μ λμ μ§λκ° κ²½μ°
μ΄ μμ΄λ λλ€.
보μ΄λ λ°λ³΅λ¬Έμμ μ’ λ£ νλ¨ νμλ₯Ό 2νμμ 1νλ‘ μ€μ΄λ μν μ ν©λλ€.
# μμ μ½λ
class SeqSearchSen{
static int seqSearchSen(int[] a, int n, int key){
int i=0;
a[n]=key; // 보μ΄λ₯Ό μΆκ°
while(true){
if(a[i]==key) // κ²μ μ±κ³΅!
break;
i++;
}
return i == n ? -1 : i; // λ³μ iκ°μ΄ nμ΄λ©΄ μ°Ύμ κ°μ΄ 보μ΄μ΄λ―λ‘ κ²μ μ€ν¨μ
}
public static void main(Stirng[] args){
Scanner stdIn = new Scanner(System.in);
System.out.print("μμμ:" );
int num = stdIn.nextInt();
int[] x = new int[num+1];
for(int i=0; i<num; i++){
System.out.print("x["+i+"]:");
x[i] = stdIn.nextInt();
}
System.out.print("κ²μν κ°:");
int ky = stdIn.nextInt();
int idx = seqSearchSen(x,num,ky); // λ°°μ΄ xμμ κ°μ΄ kyμΈ μμλ₯Ό κ²μ
if(idx == -1)
System.out.println("κ·Έ κ°μ μμκ° μμ΅λλ€.");
else
System.out.println(ky+"μ(λ) x["+idx+"]μ μμ΅λλ€.");
}
}
}