CodeGym /ํ–‰๋™ /All lectures for KO purposes /์ˆ˜ํ•™ ์ˆ˜์—…

์ˆ˜ํ•™ ์ˆ˜์—…

All lectures for KO purposes
๋ ˆ๋ฒจ 1 , ๋ ˆ์Šจ 537
์‚ฌ์šฉ ๊ฐ€๋Šฅ

1. ์ž๋ฐ” ์‚ผ๊ฐํ•จ์ˆ˜

Math์ด์ „์— ๋ฐ˜์˜ฌ๋ฆผ ์ˆซ์ž๋ฅผ ๊ณต๋ถ€ํ–ˆ์„ ๋•Œ ํด๋ž˜์Šค์™€ ๊ทธ ๋ฐฉ๋ฒ• ์ค‘ ์ผ๋ถ€์— ๋Œ€ํ•ด ์•Œ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค . ์ด์ œ ์ด ํด๋ž˜์Šค์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด๋ฆ„์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด ์ด Mathํด๋ž˜์Šค์—๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ๊ฐ€์žฅ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ์ˆ˜ํ•™ ์—ฐ์‚ฐ์— ๋Œ€ํ•œ ๋ฉ”์„œ๋“œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ๊ฐ€์žฅ ํฅ๋ฏธ๋กœ์šด ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ฐฉ๋ฒ• ์„ค๋ช…
double sin(double d)
๊ฐ๋„์˜ ์‚ฌ์ธ์„ d๋ผ๋””์•ˆ์œผ๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
double cos(double d)
๊ฐ๋„์˜ ์ฝ”์‚ฌ์ธ ๊ฐ’์„ d๋ผ๋””์•ˆ์œผ๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
double tan(double d)
๊ฐ๋„์˜ ํƒ„์  ํŠธ๋ฅผ d๋ผ๋””์•ˆ์œผ๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
double asin(double d)
์•„ํฌ์‚ฌ์ธ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
double acos(double d)
์•„ํฌ์ฝ”์‚ฌ์ธ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
double atan(double d)
์•„ํฌํƒ„์  ํŠธ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
double sinh(double d)
ํ•˜์ดํผ๋ณผ๋ฆญ ์‚ฌ์ธ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
double cosh(double d)
ํ•˜์ดํผ๋ณผ๋ฆญ ์ฝ”์‚ฌ์ธ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
double tanh(double d)
ํ•˜์ดํผ๋ณผ๋ฆญ ํƒ„์  ํŠธ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

, ๋ฐ ๋ฉ”์„œ๋“œ๋Š” ๋ผ๋””์•ˆ ์œผ๋กœ ํ‘œ์‹œ๋˜๋Š” ๊ฐ๋„๋ฅผ ์ทจํ•ฉ๋‹ˆ๋‹ค. ๊ฐ๋„๋ฅผ ๋„์—์„œ ๋ผ๋””์•ˆ์œผ๋กœ ๋˜๋Š” ๊ทธ ๋ฐ˜๋Œ€๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด ์ด ํด๋ž˜์Šค๋Š” ๋‘ ๊ฐ€์ง€ ํŠน์ˆ˜ ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.Math.sin()Math.cos()Math.tan()Math

๋ฐฉ๋ฒ• ์„ค๋ช…
double toRadians(double angdeg)
๊ฐ๋„๋ฅผ ๋„์—์„œ ๋ผ๋””์•ˆ์œผ๋กœ ๋ณ€ํ™˜
double toDegrees(double angrad)
๊ฐ๋„๋ฅผ ๋ผ๋””์•ˆ์—์„œ ๋„๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ํด๋ž˜์Šค์—๋Š” ๋ฉ”์„œ๋“œ ์™ธ์—๋„ ๋‘ ๊ฐœ์˜ ์ƒ์ˆ˜ ๋ณ€์ˆ˜ (ํด๋ž˜์Šค์˜ ์ •์  ํ•„๋“œ) Math๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค .

๋Š์ž„์—†๋Š” ์„ค๋ช…
double Math.PI
"Pi" ์ƒ์ˆ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.3.141592653589793
double Math.E
"E" ์ƒ์ˆ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.2.718281828459045

์ด ๋ชจ๋“  ๊ธฐ๋Šฅ์€ ์ž์‹ ๋งŒ์˜ ๊ฒŒ์ž„์„ ์ž‘์„ฑํ•˜๊ฑฐ๋‚˜, ๊ทธ๋ž˜ํ”ฝ ์ž‘์—…์„ ํ•˜๊ฑฐ๋‚˜, ๋‹จ์ˆœํžˆ ์ง€๋„์—์„œ ๊ฒฝ๋กœ์˜ ๊ธธ์ด๋ฅผ ๊ณ„์‚ฐํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•œ ๊ฒฝ์šฐ ๋งค์šฐ ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๋ฅผ ๊ณ„์‚ฐํ•˜๋ ค๋ฉด sin(45ยฐ)๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•˜์‹ญ์‹œ์˜ค.

Math.sin( Math.toRadians(45) )

์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

public class Main
{
   public static int N = 10;

   public static void drawValue(double y)
   {
     int value = (int) (y * N) + N;
     for (int i = 0; i < 2 * N; i++)
     {
       char c = i == N ? '|': '.';
       if (i == value)
         c = '*';
       System.out.print(c);
     }
     System.out.println();
   }

   public static void main(String[] args)
   {
     for (int i = 0; i < 10 * N; i++)
     {
       double x = i * 1.0 / N;
       double y = Math.sin(x);
       drawValue(y);
     }
   }
}


2. Java์˜ ๋Œ€์ˆ˜ ํ•จ์ˆ˜

๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ๊ณ ๋“ฑํ•™๊ต ์ˆ˜ํ•™์€ ํ”„๋กœ๊ทธ๋ž˜๋จธ์—๊ฒŒ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์ธ๊ณผ ์ฝ”์‚ฌ์ธ์กฐ์ฐจ๋„ ์ฝ”๋“œ์—์„œ ๊ฑฐ์˜ ๋ฐœ๊ฒฌ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„ ๊ฒŒ์ž„, ์ง€๋„ ๋˜๋Š” ๊ฒŒ์ž„ ์—”์ง„์œผ๋กœ ์ž‘์—…ํ•  ๋•Œ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ 90%๋Š” ์ด๋Ÿฐ ์ผ์„ ๊ฒช์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๊ธฐํ•˜ํ•™ ์™ธ์—๋„ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ๋•Œ๋•Œ๋กœ ๋Œ€์ˆ˜ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  Mathํด๋ž˜์Šค์—๋Š” ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ํด๋ž˜์Šค๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐฉ๋ฒ• ์„ค๋ช…
double sqrt(double a)
์˜ ์ œ๊ณฑ๊ทผa
double cbrt(double a)
์˜ ์„ธ์ œ๊ณฑ๊ทผa
double pow(double a, double b)
์ง€์ˆ˜:ab
double exp(double a)
์ง€์ˆ˜(์˜ค์ผ๋Ÿฌ ์ˆ˜์˜ ๊ฑฐ๋“ญ์ œ๊ณฑ):ea
double log(double a)
๋‹ค์Œ์˜ ์ž์—ฐ ๋กœ๊ทธ a:ln(a)
double log10(double a)
๋ฐ‘์ด 10์ธ ๋กœ๊ทธ a:log10(a)
double log1p(double x)
๋‹ค์Œ์˜ ์ž์—ฐ ๋กœ๊ทธ x + 1:ln(x + 1)
double expm1(double x)
ex-1

์ˆซ์ž์˜ ์ œ๊ณฑ๊ทผ ๋˜๋Š” ์„ธ์ œ๊ณฑ๊ทผ์„ ์›ํ•˜๋Š” ๊ฒฝ์šฐ sqrt(a)๋ฐ cbrt(a)๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ œ๊ณฑ๊ทผ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Math.sqrt(2)

๋” ๋†’์€ ๊ฑฐ๋“ญ์ œ๊ณฑ์˜ ๊ทผ์„ ์–ป์œผ๋ ค๋ฉด ๊ฑฐ๋“ญ์ œ๊ณฑ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉ aํ•˜์‹ญ์‹œ์˜ค ยผ.

Math.pow(2, 0.25)

log(a)๋กœ๊ทธ ๋ฐ ์ง€์ˆ˜์˜ ๊ฒฝ์šฐ (์ž์—ฐ ๋กœ๊ทธ) ๋ฐ exp(x)(์ง€์ˆ˜) ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค . ๋ฐ‘์ด 10์ธ ๋กœ๊ทธ๋ฅผ ๊ณ„์‚ฐํ•˜๋ ค๋ฉด log10(a).

์ˆซ์ž์˜ ๋กœ๊ทธ๋ฅผ b๋ฐ‘์œผ๋กœ ํ•˜๋ ค๋ฉด a๋‹ค์Œ ๊ฐ„๋‹จํ•œ ๊ณต์‹์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.loga(b) = ln(b) / ln(a)

์œ ์šฉํ•œ ๋ฐฉ๋ฒ•

์˜ ๋งค์šฐ ์ž‘์€ ๊ฐ’์„ ํฌํ•จํ•˜๋Š” ๊ณ„์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ x๋งˆ์ง€๋ง‰ ๋‘ ํ•จ์ˆ˜ โ€” log1p()and expm1()โ€”๊ฐ€ ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋งค์šฐ ์ž‘์€ ๋ณ€์ˆ˜์™€ ๋งค์šฐ ํฐ ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ double๋งค์šฐ ์ž‘์€ ๊ฐ’์ด ์ค‘์š”ํ•˜์ง€ ์•Š์€ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋˜์–ด ๋ฌด์‹œ(๋ฒ„๋ ค์ง)๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ข…์ข… ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค ์ด๊ฒƒ์€ log()and exp()๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์— ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋กœ๊ทธ๋ž˜๋จธ๋“ค์€ "์ž‘๊ณ  ์ค‘์š”ํ•œ ๋ถ€๋ถ„"๋งŒ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๊ณ ์•ˆํ–ˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ:

์˜ ์ž์—ฐ ๋กœ๊ทธ๋ฅผ ๊ณ„์‚ฐํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค 1 + x. ์—ฌ๊ธฐ์„œ ๋Š” x์ž…๋‹ˆ๋‹ค . ์™€ ๋ฅผ ๋”ํ•˜๋ฉด ์„ ์–ป๊ฒŒ ๋˜๋ฏ€๋กœ ๋‹จ์ˆœํžˆ ์ด ์ˆซ์ž๋ฅผ ๋ฉ”์„œ๋“œ์— ์ „๋‹ฌํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค . ์ˆซ์ž๊ฐ€ ๋”ํ•ด์ง€๋ฉด ์™„์ „ํžˆ ๋ฒ„๋ ค์งˆ ์ •๋„๋กœ ์ž‘์€ ์ˆซ์ž์ž…๋‹ˆ๋‹ค.10-20log()110-20110-20

log()์ˆ˜ํ•™์€ ์ข…์ข… ์— ๊ฐ€๊นŒ์šด ์ˆซ์ž์˜ ๊ณ„์‚ฐ์„ ํฌํ•จํ•˜๊ธฐ ๋•Œ๋ฌธ์— 1ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ƒ๊ฐํ•ด ๋ƒˆ์Šต๋‹ˆ๋‹ค. ์ˆซ์ž ์ž์ฒด๋ฅผ ๋ฉ”์„œ๋“œ์— ์ „๋‹ฌํ•˜๋Š” ๋Œ€์‹  ์—์„œ ์ฐจ์ด๋งŒ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค 1.



3. ์ตœ์†Œ ๋ฐ ์ตœ๋Œ€

๋‘ ๊ฐ€์ง€ ๋” ์œ ์šฉํ•œ ๊ธฐ๋Šฅ์€ min(a, b)๋ฐ ์ž…๋‹ˆ๋‹ค max(a, b). ์ด๋ฏธ ์ง์ž‘ํ•˜์…จ๊ฒ ์ง€๋งŒ ์ฒซ ๋ฒˆ์งธ๋Š” ๋‘ ์ˆซ์ž ์ค‘ ์ตœ์†Œ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

Math.min(a, b)

๋‘ ๋ฒˆ์งธ๋Š” ์ตœ๋Œ€ ๋‘ ์ˆซ์ž๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

Math.max(a, b)

ifํ•ญ์ƒ ์“ฐ๊ฑฐ๋‚˜ ์‚ผํ•ญ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ์™œ ์ด๋Ÿฌํ•œ ํ•จ์ˆ˜๊ฐ€ ํ•„์š”ํ•œ๊ฐ€์š” (a < b ? a: b)?

์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋•Œ๋กœ๋Š” ์ฝ”๋“œ๊ฐ€ ๋ฌธ์œผ๋กœ ์˜ค๋ฒ„๋กœ๋“œ๋˜์–ด if๋” ๊ฐ„๊ฒฐํ•œ ํ‘œ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋น„๊ตํ•ด๋ณด์ž:

์•”ํ˜ธ ์„ค๋ช…
int x = 0;
if (x-5+y*20 < x*x+y*y)
   x = x-5+y*20;
else
   x = x*x+y*y;
๋ฌธ ์‚ฌ์šฉ if-else(๊ฐ€์žฅ ๊ธด ์ž‘์„ฑ ๋ฐฉ๋ฒ•)
int x = x-5+y*20 < x*x+y*y ? x-5+y*20 : x*x+y*y;
์‚ผํ•ญ ์—ฐ์‚ฐ์ž ์‚ฌ์šฉ ๋‹จ์ :
- ๋ถ€ํ”ผ๊ฐ€ ํฐ ์ฝ”๋“œ
- ๊ณ„์‚ฐ์ด ๋‘ ๋ฒˆ ์ˆ˜ํ–‰๋จ
int a = x-5+y*20;
int b = x*x+y*y;
int x = a < b ? a : b;
์ด๊ฒƒ์€ ์“ฐ๊ธฐ ์ข‹์€ ๋ฐฉ๋ฒ•์ด์ง€๋งŒ ์•ฝ๊ฐ„ ์ค‘๋ณต๋ฉ๋‹ˆ๋‹ค.
int x = Math.min(x-5+y*20, x*x+y*y);
๋ฐ”๋กœ ๐Ÿ™‚

4. ์—ฌ๋Ÿฌ ์ˆซ์ž์˜ ์ตœ์†Œ๊ฐ’๊ณผ ์ตœ๋Œ€๊ฐ’

min()and ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค max().

์—ฌ๋Ÿฌ ์ˆซ์ž๋‚˜ ๋ณ€์ˆ˜์˜ ์ตœ์†Œ๊ฐ’(๋˜๋Š” ์ตœ๋Œ€๊ฐ’)์„ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ์ค‘์ฒฉ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ด ๋งค์šฐ ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์ตœ์†Œ 3๊ฐœ์˜ ์ˆซ์ž๋ฅผ ์ฐพ๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Math.min(a, Math.min(b, c))

๊ทธ๋ž˜์„œ ๋ญ? ๋งค์šฐ ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋‘ ์ˆซ์ž์˜ ์ตœ์†Œ๊ฐ’์„ ๊ณ„์‚ฐํ•œ ๋‹ค์Œ ์ด ์ˆซ์ž์˜ ์ตœ์†Œ๊ฐ’๊ณผ ์„ธ ๋ฒˆ์งธ ์ˆซ์ž๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์ตœ์†Œ 4๊ฐœ์˜ ์ˆซ์ž๋Š” ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์–ป์Šต๋‹ˆ๋‹ค.

Math.min(a, Math.min(b, Math.min(ั, d)))

์ฆ‰, ์ด ๊ณต์‹์„ ์ข€ ๋” ๋ช…ํ™•ํ•˜๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Math.min(Math.min(a, b), Math.min(c, d))

๋ฐฉ๋ฒ• ์— ๋Œ€ํ•ด ๋ชจ๋‘ ๋™์ผํ•˜๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค max().

if-else์—ฐ์‚ฐ์ž ๋˜๋Š” ์‚ผํ•ญ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋Ÿฌํ•œ ์ฝ”๋“œ ์Šค๋‹ˆํŽซ์ด ์กฐ๊ธˆ ๋” ๋ณต์žกํ•ด์ง‘๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ min()๋ฐ max()๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์™„๋ฒฝํ•ฉ๋‹ˆ๋‹ค.


์ฝ”๋ฉ˜ํŠธ
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION