๐งช ํ ์คํธ ์ปค๋ฒ๋ฆฌ์ง: ๋ฌธ์ฅ, ๊ฒฐ์ , ์กฐ๊ฑด, MC/DC | ๐์ ์ฒ๊ธฐ ์ค๊ธฐ ๋๋น ๋ฌธ์ ํฌํจ
์์ฝ
์ํํธ์จ์ด ํ ์คํธ์ ํต์ฌ ๊ฐ๋ ์ธ ํ ์คํธ ์ปค๋ฒ๋ฆฌ์ง(๊ตฌ๋ฌธ, ๊ฒฐ์ , ์กฐ๊ฑด, ์กฐ๊ฑด/๊ฒฐ์ , MC/DC)๋ฅผ ์์๋ณด๊ณ , ์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ ์ค๊ธฐ ๊ธฐ์ถ๋ฌธ์ ๋ฅผ ํตํด ์๋ฒฝํ๊ฒ ๋๋นํฉ๋๋ค.
๐ก ์ ์ฒ๊ธฐ ์ค๊ธฐ ๋๋น๋ฅผ ์ํ ์ฃผ๊ด์ ๋ฌธ์ ๋ ํฌ์คํ ๋ง์ง๋ง์ ์์ต๋๋ค. ์ค๋ช ์ ๋ณด๊ณ ์ด๋ค ์ปค๋ฒ๋ฆฌ์ง์ธ์ง ๋ง์ถ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
์ํํธ์จ์ด ํ ์คํธ์์ ํ ์คํธ ์ปค๋ฒ๋ฆฌ์ง๋ ํ ์คํธ๊ฐ ์์ค ์ฝ๋๋ฅผ ์ผ๋ง๋ ์ถฉ๋ถํ ๊ฒ์ฆํ๋์ง๋ฅผ ๋ํ๋ด๋ ์งํ์ ๋๋ค. ๋์ ์ปค๋ฒ๋ฆฌ์ง๊ฐ ๋ฐ๋์ ๋์ ํ์ง์ ๋ณด์ฅํ๋ ๊ฒ์ ์๋์ง๋ง, ํ ์คํธ๊ฐ ๋ถ์กฑํ ๋ถ๋ถ์ ์๋ณํ๊ณ ํ ์คํธ์ ์ ๋ขฐ์ฑ์ ๋์ด๋ ๋ฐ ์ค์ํ ์ญํ ์ ํฉ๋๋ค.
ํนํ ํ์ดํธ๋ฐ์ค ํ ์คํธ์์ ์ฌ์ฉ๋๋ ๋ค์ํ ์ปค๋ฒ๋ฆฌ์ง ๊ธฐ์ค์ ์ดํดํ๋ ๊ฒ์ ์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ ์ํ์ ์์ฃผ ์ถ์ ๋๋ ํต์ฌ ๊ฐ๋ ์ ๋๋ค.
๐ ํ ์คํธ ์ปค๋ฒ๋ฆฌ์ง ์ข ๋ฅ ์์ฝ
ํ ์คํธ ์ปค๋ฒ๋ฆฌ์ง๋ ํ ์คํธ์ ์ถฉ๋ถ์ฑ์ ์ธก์ ํ๋ ๊ธฐ์ค์ผ๋ก, ์ฝ๋์ ๊ตฌ์กฐ์ ๋ณต์ก๋์ ๋ฐ๋ผ ๋ค์ํ ์ข ๋ฅ๊ฐ ์์ต๋๋ค. ์ปค๋ฒ๋ฆฌ์ง ๊ฐ์๋ ๊ณ์ธต์ ๊ด๊ณ๊ฐ ์์ด, ์ผ๋ฐ์ ์ผ๋ก MC/DC๊ฐ ๊ฐ์ฅ ๊ฐ๋ ฅํ ๊ธฐ์ค์ผ๋ก ํ๊ฐ๋ฉ๋๋ค.
์ปค๋ฒ๋ฆฌ์ง ๊ฐ๋: ๊ตฌ๋ฌธ < ๊ฒฐ์ < ์กฐ๊ฑด < ์กฐ๊ฑด/๊ฒฐ์ < ๋ณ๊ฒฝ ์กฐ๊ฑด/๊ฒฐ์ (MC/DC)
์ปค๋ฒ๋ฆฌ์ง ์ข ๋ฅ | ํต์ฌ ํค์๋ |
---|---|
๊ตฌ๋ฌธ(๋ฌธ์ฅ) ์ปค๋ฒ๋ฆฌ์ง | ๋ชจ๋ ๋ช
๋ น๋ฌธ , ํ ๋ฒ ์ด์ ์คํ |
๊ฒฐ์ (๋ถ๊ธฐ) ์ปค๋ฒ๋ฆฌ์ง | ๋ชจ๋ ๊ฒฐ์ ๋ฌธ , ์ฐธ/๊ฑฐ์ง , ํ ๋ฒ ์ด์ |
์กฐ๊ฑด ์ปค๋ฒ๋ฆฌ์ง | ๊ฒฐ์ ๋ฌธ ๋ด , ๊ฐ ์กฐ๊ฑด์ , ์ฐธ/๊ฑฐ์ง |
์กฐ๊ฑด/๊ฒฐ์ ์ปค๋ฒ๋ฆฌ์ง | ์กฐ๊ฑด + ๊ฒฐ์ ์ปค๋ฒ๋ฆฌ์ง ๋ชจ๋ ๋ง์กฑ |
๋ณ๊ฒฝ ์กฐ๊ฑด/๊ฒฐ์ ์ปค๋ฒ๋ฆฌ์ง | ๊ฐ๋ณ ์กฐ๊ฑด์ , ๋
๋ฆฝ์ ์ํฅ |
1. ๊ตฌ๋ฌธ(๋ฌธ์ฅ) ์ปค๋ฒ๋ฆฌ์ง (Statement Coverage)
๊ตฌ๋ฌธ ์ปค๋ฒ๋ฆฌ์ง๋ ์์ค ์ฝ๋์ ๋ชจ๋ ์คํ ๊ฐ๋ฅํ ๋ฌธ์ฅ์ด ์ ์ด๋ ํ ๋ฒ ์ด์ ์คํ๋์๋์ง๋ฅผ ์ธก์ ํ๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์ปค๋ฒ๋ฆฌ์ง ๊ธฐ์ค์ ๋๋ค.
-
์ฅ์ : ์ดํดํ๊ธฐ ์ฝ๊ณ ํ ์คํธ ์ผ์ด์ค๋ฅผ ๋ง๋ค๊ธฐ ๊ฐํธํฉ๋๋ค.
-
๋จ์ : ์ฝ๋์ ๋ ผ๋ฆฌ์ ์ธ ๋ถ๊ธฐ(branch)๋ฅผ ๋ชจ๋ ํ ์คํธํ์ง ๋ชปํ ์ ์์ต๋๋ค.
-
์์ ์ฝ๋:
public void example(int x) {
if (x > 0) { // ๊ฒฐ์ ๋ฌธ
System.out.println("Positive"); // ๋ฌธ์ฅ 1
}
System.out.println("End"); // ๋ฌธ์ฅ 2
}
- 100% ์ปค๋ฒ๋ฆฌ์ง ํ
์คํธ ์ผ์ด์ค:
x = 5
- ์ ํ
์คํธ ์ผ์ด์ค๋
if
๋ฌธ์ ์ฐธ(true) ๊ฒฝ๋ก๋ง ํ ์คํธํ์ง๋ง,๋ฌธ์ฅ 1
๊ณผ๋ฌธ์ฅ 2
๋ฅผ ๋ชจ๋ ์คํํ๋ฏ๋ก ๊ตฌ๋ฌธ ์ปค๋ฒ๋ฆฌ์ง 100%๋ฅผ ๋ง์กฑํฉ๋๋ค.x
๊ฐ 0 ์ดํ์ธ ๊ฒฝ์ฐ๋ ํ ์คํธํ์ง ์์ต๋๋ค.
2. ๊ฒฐ์ (๋ถ๊ธฐ) ์ปค๋ฒ๋ฆฌ์ง (Decision/Branch Coverage)
๊ฒฐ์ ์ปค๋ฒ๋ฆฌ์ง๋ ๋ชจ๋ ๊ฒฐ์ ๋ฌธ(if, switch, for, while ๋ฑ)์ ๊ฒฐ๊ณผ๊ฐ ์ฐธ(True)๊ณผ ๊ฑฐ์ง(False)์ ๊ฐ๊ฐ ํ ๋ฒ ์ด์ ๊ฐ๋๋ก ํ ์คํธํ๋ ๊ธฐ์ค์ ๋๋ค. ๊ตฌ๋ฌธ ์ปค๋ฒ๋ฆฌ์ง๋ณด๋ค ๊ฐ๋ ฅํ ๊ธฐ์ค์ผ๋ก ํ๊ฐ๋ฉ๋๋ค.
-
์ฅ์ : ๊ตฌ๋ฌธ ์ปค๋ฒ๋ฆฌ์ง๊ฐ ๋์น๋ ๋ถ๊ธฐ ๊ฒฝ๋ก๋ฅผ ํ ์คํธํ ์ ์์ต๋๋ค.
-
๋จ์ : ๋ณต์กํ ์กฐ๊ฑด์ ๋ด๋ถ์ ๋ชจ๋ ์กฐํฉ์ ํ ์คํธํ์ง๋ ๋ชปํฉ๋๋ค.
-
์์ ์ฝ๋:
public void example(int x, int y) {
if (x > 0 && y > 0) { // ๊ฒฐ์ ๋ฌธ
System.out.println("Both Positive");
}
}
- 100% ์ปค๋ฒ๋ฆฌ์ง ํ
์คํธ ์ผ์ด์ค:
x = 5, y = 5
(๊ฒฐ์ ๋ฌธ ๊ฒฐ๊ณผ: ์ฐธ)x = -1, y = 5
(๊ฒฐ์ ๋ฌธ ๊ฒฐ๊ณผ: ๊ฑฐ์ง)
- ์ ๋ ์ผ์ด์ค๋ ๊ฒฐ์ ๋ฌธ์ ์ฐธ/๊ฑฐ์ง ๊ฒฐ๊ณผ๋ฅผ ๋ชจ๋ ํฌํจํ๋ฏ๋ก ๊ฒฐ์ ์ปค๋ฒ๋ฆฌ์ง 100%๋ฅผ ๋ง์กฑํฉ๋๋ค.
3. ์กฐ๊ฑด ์ปค๋ฒ๋ฆฌ์ง (Condition Coverage)
์กฐ๊ฑด ์ปค๋ฒ๋ฆฌ์ง๋ ๊ฒฐ์ ๋ฌธ ๋ด์ ์๋ ๊ฐ๊ฐ์ ๊ฐ๋ณ ์กฐ๊ฑด์์ด ์ฐธ(True)๊ณผ ๊ฑฐ์ง(False)์ ๊ฐ๊ฐ ํ ๋ฒ ์ด์ ๊ฐ๋๋ก ํ ์คํธํ๋ ๊ธฐ์ค์ ๋๋ค.
-
์ฃผ์: ์กฐ๊ฑด ์ปค๋ฒ๋ฆฌ์ง๋ ๊ฒฐ์ ๋ฌธ ์ ์ฒด์ ๊ฒฐ๊ณผ(์ฐธ/๊ฑฐ์ง)๋ ๊ณ ๋ คํ์ง ์์ต๋๋ค. ์ด๋ก ์ธํด ๊ฒฐ์ ์ปค๋ฒ๋ฆฌ์ง๋ฅผ 100% ๋ง์กฑ์ํค์ง ๋ชปํ๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
-
์์ ์ฝ๋:
public void example(int x, int y) {
// ๊ฒฐ์ ๋ฌธ: (x > 0 && y > 0)
// ์กฐ๊ฑด 1: x > 0
// ์กฐ๊ฑด 2: y > 0
if (x > 0 && y > 0) {
System.out.println("Both Positive");
}
}
- 100% ์ปค๋ฒ๋ฆฌ์ง ํ
์คํธ ์ผ์ด์ค:
x = 5, y = -5
(์กฐ๊ฑด1: ์ฐธ, ์กฐ๊ฑด2: ๊ฑฐ์ง)x = -5, y = 5
(์กฐ๊ฑด1: ๊ฑฐ์ง, ์กฐ๊ฑด2: ์ฐธ)
- ์ ๋ ์ผ์ด์ค๋ ๊ฐ ์กฐ๊ฑด์์ด ์ฐธ/๊ฑฐ์ง์ ๋ชจ๋ ๊ฐ์ง๋ฏ๋ก ์กฐ๊ฑด ์ปค๋ฒ๋ฆฌ์ง 100%๋ฅผ ๋ง์กฑํฉ๋๋ค. ํ์ง๋ง ๊ฒฐ์ ๋ฌธ ์ ์ฒด์ ๊ฒฐ๊ณผ๋ ํญ์ ๊ฑฐ์ง์ด๋ฏ๋ก, ๊ฒฐ์ ์ปค๋ฒ๋ฆฌ์ง๋ 50%๋ง ๋ง์กฑํฉ๋๋ค.
4. ์กฐ๊ฑด/๊ฒฐ์ ์ปค๋ฒ๋ฆฌ์ง (Condition/Decision Coverage)
์กฐ๊ฑด/๊ฒฐ์ ์ปค๋ฒ๋ฆฌ์ง๋ ๊ฒฐ์ ์ปค๋ฒ๋ฆฌ์ง์ ์กฐ๊ฑด ์ปค๋ฒ๋ฆฌ์ง๋ฅผ ๋ชจ๋ 100% ๋ง์กฑํ๋ ํ ์คํธ ๊ธฐ์ค์ ๋๋ค. ์ฆ, ๋ชจ๋ ๊ฒฐ์ ๋ฌธ์ ๊ฒฐ๊ณผ๊ฐ ์ฐธ/๊ฑฐ์ง์ ๊ฐ๊ฐ ํ ๋ฒ ์ด์ ๊ฐ์ง๋ฉด์, ๋์์ ๋ชจ๋ ๊ฐ๋ณ ์กฐ๊ฑด์์ ๊ฒฐ๊ณผ๋ ์ฐธ/๊ฑฐ์ง์ ๊ฐ๊ฐ ํ ๋ฒ ์ด์ ๊ฐ๋๋ก ํ ์คํธ ์ผ์ด์ค๋ฅผ ์ค๊ณํด์ผ ํฉ๋๋ค.
-
์ฅ์ : ๊ฒฐ์ ๊ณผ ์กฐ๊ฑด ์์ค์ ๋ชจ๋ ๋ง์กฑ์์ผ ํ ์คํธ์ ์ ๋ขฐ๋๋ฅผ ๋์ ๋๋ค.
-
๋จ์ : ์กฐ๊ฑด์์ ๋ชจ๋ ์กฐํฉ์ ํ ์คํธํ์ง๋ ์์ผ๋ฏ๋ก, MC/DC๋ณด๋ค๋ ๊ฐ๋๊ฐ ์ฝํฉ๋๋ค.
-
์์ ์ฝ๋:
public void example(int x, int y) {
// ๊ฒฐ์ ๋ฌธ: (x > 0 && y > 0)
// ์กฐ๊ฑด 1: x > 0
// ์กฐ๊ฑด 2: y > 0
if (x > 0 && y > 0) {
System.out.println("Both Positive");
}
}
-
100% ์ปค๋ฒ๋ฆฌ์ง ํ ์คํธ ์ผ์ด์ค:
x = 5, y = 5
- ์กฐ๊ฑด1: ์ฐธ, ์กฐ๊ฑด2: ์ฐธ
- ๊ฒฐ์ ๋ฌธ ๊ฒฐ๊ณผ: ์ฐธ
x = -5, y = -5
- ์กฐ๊ฑด1: ๊ฑฐ์ง, ์กฐ๊ฑด2: ๊ฑฐ์ง
- ๊ฒฐ์ ๋ฌธ ๊ฒฐ๊ณผ: ๊ฑฐ์ง
-
๋ถ์:
- ๊ฒฐ์ ์ปค๋ฒ๋ฆฌ์ง: ๊ฒฐ์ ๋ฌธ์ ๊ฒฐ๊ณผ๊ฐ ์ฐธ/๊ฑฐ์ง์ ๋ชจ๋ ๊ฐ์ง๋ฏ๋ก 100% ๋ง์กฑํฉ๋๋ค.
- ์กฐ๊ฑด ์ปค๋ฒ๋ฆฌ์ง: ์กฐ๊ฑด1(
x>0
)๊ณผ ์กฐ๊ฑด2(y>0
)๊ฐ ๊ฐ๊ฐ ์ฐธ/๊ฑฐ์ง์ ๋ชจ๋ ๊ฐ์ง๋ฏ๋ก 100% ๋ง์กฑํฉ๋๋ค.
5. ๋ณ๊ฒฝ ์กฐ๊ฑด/๊ฒฐ์ ์ปค๋ฒ๋ฆฌ์ง (MC/DC, Modified Condition/Decision Coverage)
MC/DC๋ ์กฐ๊ฑด ์ปค๋ฒ๋ฆฌ์ง์ ๊ฒฐ์ ์ปค๋ฒ๋ฆฌ์ง๋ฅผ ๋ชจ๋ ๋ง์กฑ์ํค๋ฉด์, ๊ฐ ๊ฐ๋ณ ์กฐ๊ฑด์์ด ๋ค๋ฅธ ์กฐ๊ฑด์์ ๊ฐ๊ณผ ๊ด๊ณ์์ด ์ ์ฒด ๊ฒฐ์ ๋ฌธ์ ๊ฒฐ๊ณผ์ ๋ ๋ฆฝ์ ์ผ๋ก ์ํฅ์ ๋ฏธ์น๋ ๊ฒฝ์ฐ๋ฅผ ํ ์คํธํ๋ ๋งค์ฐ ๊ฐ๋ ฅํ ๊ธฐ์ค์ ๋๋ค. ์ฃผ๋ก ํญ๊ณต, ์์๋ ฅ, ์๋ฃ ๋ฑ ๋์ ์ ๋ขฐ์ฑ์ด ์๊ตฌ๋๋ ์์คํ ์์ ์ฌ์ฉ๋ฉ๋๋ค.
-
ํต์ฌ: ๊ฐ ์กฐ๊ฑด์ด '๋ ๋ฆฝ์ ์ผ๋ก' ๊ฒฐ๊ณผ์ ์ํฅ์ ์ฃผ๋ ๊ฒ์ ์ฆ๋ช ํด์ผ ํฉ๋๋ค.
-
์์ ์ฝ๋:
public void example(boolean A, boolean B, boolean C) {
// ๊ฒฐ์ ๋ฌธ: (A || B) && C
if ((A || B) && C) {
System.out.println("Success");
}
}
- 100% ์ปค๋ฒ๋ฆฌ์ง ํ
์คํธ ์ผ์ด์ค (์ผ๋ถ):
- A์ ๋
๋ฆฝ์ ์ํฅ ์ฆ๋ช
: B๋ False, C๋ True๋ก ๊ณ ์ ํ ์ํ์์ A๋ฅผ ๋ณ๊ฒฝํ์ฌ ์ ์ฒด ๊ฒฐ๊ณผ๊ฐ ๋ฐ๋๋์ง ํ์ธํฉ๋๋ค.
A=T, B=F, C=T
-> ๊ฒฐ๊ณผ: TrueA=F, B=F, C=T
-> ๊ฒฐ๊ณผ: False
- B์ ๋
๋ฆฝ์ ์ํฅ ์ฆ๋ช
: A๋ False, C๋ True๋ก ๊ณ ์ ํ ์ํ์์ B๋ฅผ ๋ณ๊ฒฝํ์ฌ ์ ์ฒด ๊ฒฐ๊ณผ๊ฐ ๋ฐ๋๋์ง ํ์ธํฉ๋๋ค.
A=F, B=T, C=T
-> ๊ฒฐ๊ณผ: TrueA=F, B=F, C=T
-> ๊ฒฐ๊ณผ: False
- C์ ๋
๋ฆฝ์ ์ํฅ ์ฆ๋ช
: (A || B)๊ฐ True๊ฐ ๋๋๋ก ๊ณ ์ ํ ์ํ(์: A=T, B=F)์์ C๋ฅผ ๋ณ๊ฒฝํ์ฌ ์ ์ฒด ๊ฒฐ๊ณผ๊ฐ ๋ฐ๋๋์ง ํ์ธํฉ๋๋ค.
A=T, B=F, C=T
-> ๊ฒฐ๊ณผ: TrueA=T, B=F, C=F
-> ๊ฒฐ๊ณผ: False
- A์ ๋
๋ฆฝ์ ์ํฅ ์ฆ๋ช
: B๋ False, C๋ True๋ก ๊ณ ์ ํ ์ํ์์ A๋ฅผ ๋ณ๊ฒฝํ์ฌ ์ ์ฒด ๊ฒฐ๊ณผ๊ฐ ๋ฐ๋๋์ง ํ์ธํฉ๋๋ค.
๐ ์ ์ฒ๊ธฐ ์ค๊ธฐ ๋๋น ์ข ํฉ ๋ฌธ์
์๋ ์ฝ๋์ ์ ์ด ํ๋ฆ ๊ทธ๋ํ๋ฅผ ๋ณด๊ณ , ๊ฐ ํ ์คํธ ์ปค๋ฒ๋ฆฌ์ง๋ฅผ 100% ๋ง์กฑํ๋ ํ ์คํธ ์ผ์ด์ค ์กฐํฉ์ ๋ณด๊ธฐ์์ ๊ณ ๋ฅด์์ค.
๋์ ์ฝ๋ ๋ฐ ์ ์ด ํ๋ฆ ๊ทธ๋ํ
public void check(int a, int b) {
// ๋
ธ๋ A (๊ฒฐ์ ๋ฌธ)
if (a > 10 && b == 5) {
// ๋
ธ๋ B
System.out.println("Path 1");
} else {
// ๋
ธ๋ C
System.out.println("Path 2");
}
// ๋
ธ๋ D
System.out.println("End");
}
๋ฌธ์ 1
๋ฌธ์ 1
๋ณด๊ธฐ:
- "TC1: (a=20, b=5)"
- "TC1: (a=5, b=1), TC2: (a=1, b=5)"
- "TC1: (a=20, b=5), TC2: (a=5, b=5)"
- "TC1: (a=15, b=5), TC2: (a=30, b=5)"
๋ฌธ์ | ๋ค์ ๋ณด๊ธฐ ์ค ๊ตฌ๋ฌธ ์ปค๋ฒ๋ฆฌ์ง๋ฅผ 100% ๋ง์กฑํ๋ ํ ์คํธ ์ผ์ด์ค ์กฐํฉ์ ๋ฌด์์ธ๊ฐ? |
๋ต๋ณ | |
์ ๋ต | ์ ๋ต ๋ณด๊ธฐ |
๋ฌธ์ 2
๋ฌธ์ 2
๋ณด๊ธฐ:
- "TC1: (a=5, b=1), TC2: (a=1, b=1)"
- "TC1: (a=20, b=5), TC2: (a=5, b=1)"
- "TC1: (a=15, b=5), TC2: (a=30, b=5)"
- "TC1: (a=5, b=5), TC2: (a=1, b=1)"
๋ฌธ์ | ๋ค์ ๋ณด๊ธฐ ์ค ๊ฒฐ์ (๋ถ๊ธฐ) ์ปค๋ฒ๋ฆฌ์ง๋ฅผ 100% ๋ง์กฑํ๋ ํ ์คํธ ์ผ์ด์ค ์กฐํฉ์ ๋ฌด์์ธ๊ฐ? |
๋ต๋ณ | |
์ ๋ต | ์ ๋ต ๋ณด๊ธฐ |
๋ฌธ์ 3
๋ฌธ์ 3
๋ณด๊ธฐ:
- "TC1: (a=20, b=5), TC2: (a=5, b=5)"
- "TC1: (a=5, b=1), TC2: (a=1, b=2)"
- "TC1: (a=20, b=1), TC2: (a=5, b=5)"
- "TC1: (a=20, b=5), TC2: (a=15, b=5)"
๋ฌธ์ | ๋ค์ ๋ณด๊ธฐ ์ค ์กฐ๊ฑด ์ปค๋ฒ๋ฆฌ์ง๋ฅผ 100% ๋ง์กฑํ๋ ํ ์คํธ ์ผ์ด์ค ์กฐํฉ์ ๋ฌด์์ธ๊ฐ? |
๋ต๋ณ | |
์ ๋ต | ์ ๋ต ๋ณด๊ธฐ |
์ค๋ช ๋ฌธ์
๋ฌธ์ | ๋ชจ๋ ๋ช ๋ น๋ฌธ์ ์ ์ด๋ ํ ๋ฒ ์คํ๋๋๋ก ์กฐํฉํ๋ ์ปค๋ฒ๋ฆฌ์ง๋ ๋ฌด์์ธ๊ฐ? |
๋ต๋ณ | |
์ ๋ต | ์ ๋ต ๋ณด๊ธฐ |
๋ฌธ์ | ๊ฐ ๊ฒฐ์ ๋ฌธ์ด ์ฐธ, ๊ฑฐ์ง์ ํ ๋ฒ ์ด์ ๊ฐ๋๋ก ์กฐํฉํ๋ ์ปค๋ฒ๋ฆฌ์ง๋ ๋ฌด์์ธ๊ฐ? |
๋ต๋ณ | |
์ ๋ต | ์ ๋ต ๋ณด๊ธฐ |
๋ฌธ์ | ๊ฒฐ์ ๋ฌธ ๋ด์ ๊ฐ ์กฐ๊ฑด์ด ์ฐธ, ๊ฑฐ์ง์ ํ ๋ฒ ์ด์ ๊ฐ๋๋ก ์กฐํฉํ๋ ์ปค๋ฒ๋ฆฌ์ง๋ ๋ฌด์์ธ๊ฐ? |
๋ต๋ณ | |
์ ๋ต | ์ ๋ต ๋ณด๊ธฐ |
๋ฌธ์ | ๊ฒฐ์ ์ปค๋ฒ๋ฆฌ์ง์ ์กฐ๊ฑด ์ปค๋ฒ๋ฆฌ์ง๋ฅผ ๋ชจ๋ 100% ๋ง์กฑํ๋๋ก ์กฐํฉํ๋ ์ปค๋ฒ๋ฆฌ์ง๋ ๋ฌด์์ธ๊ฐ? |
๋ต๋ณ | |
์ ๋ต | ์ ๋ต ๋ณด๊ธฐ |
๋ฌธ์ | ๋ค์์ด ์ค๋ช ํ๋ ํ ์คํธ ๊ธฐ๋ฒ์ ์ฐ์์ค. ๊ฐ๋ณ ์กฐ๊ฑด์์ด ๋ค๋ฅธ ๊ฐ๋ณ ์กฐ๊ฑด์์ ์ํฅ์ ๋ฐ์ง ์๊ณ ์ ์ฒด ์กฐ๊ฑด์์ ๋ ๋ฆฝ์ ์ผ๋ก ์ํฅ์ ์ฃผ๋ ํ ์คํธ ์ปค๋ฒ๋ฆฌ์ง. |
๋ต๋ณ | |
์ ๋ต | ์ ๋ต ๋ณด๊ธฐ |
๐ฉโ๐ป ์ค์ ๊ธฐ์ถ ์ ํ ๋ฌธ์
๋ค์ ์ฝ๋์ ์ ์ดํ๋ฆ๋๋ฅผ ๋ณด๊ณ ๋ฌธ์ ๋ฅผ ํธ์ธ์.
๋์ ์ฝ๋
// b[]: ์ ์ ๋ฐฐ์ด, m: ๋ฐฐ์ด์ ์ ํจ ํฌ๊ธฐ, x: ๋น๊ต ๊ฐ
int Main(int b[], int m, int x) {
int a = 0; // 1. ์ด๊ธฐํ
while (a < m || b[a] < x) { // 2. ๋ฃจํ ์กฐ๊ฑด ๊ฒ์ฌ
if (b[a] < 0) { // 3. ๊ฐ์ ๋ถํธ ๊ฒ์ฌ
b[a] = -b[a]; // 4. ๋ถํธ ๋ณ๊ฒฝ
}
a++; // 5. ์ธ๋ฑ์ค ์ฆ๊ฐ
}
return 1; // 6. ๋ฐํ
}
์ ์ด ํ๋ฆ๋
๋ฌธ์ | ๋ฌธ์ 1 ๊ฐ ๋ ธ๋์ ๋ค์ด๊ฐ ์ฝ๋๋ฅผ ์์ฑํ์์ค. (์ - 1 : int a = 0;) |
๋ต๋ณ | |
์ ๋ต | ์ ๋ต ๋ณด๊ธฐ |
๋ฌธ์ | ๋ฌธ์ 2 ๋ฌธ์ฅ ์ปค๋ฒ๋ฆฌ์ง ์์๋ฅผ ์์ฑํ์์ค. 1 -> 2 -> ( ) |
๋ต๋ณ | |
์ ๋ต | ์ ๋ต ๋ณด๊ธฐ |