1๏ธโฃ return A and B or C ์ ๋ฐํ๐ซ
: ๊ฐ์ ์ ํ์ ์ผ๋ก ๋ฐํํ๋ '์ผํญ ์ฐ์ฐ์' ๋์ฒด ๊ตฌ๋ฌธ์ด๋ค.
def solution(n):
return n == int(n**.5)**2 and int(n**.5+1)**2 or -1
๐ n**.5 : n**0.5 (n์ ์ ๊ณฑ๊ทผ)
๐ ๋ง์ฝ n์ด ์์ ์ ๊ณฑ์๋ผ๋ฉด n == int(n**.5)**2 ์ฌ์ผ ํ๋ค.
๐ก return ๋ถ๋ถ์ A and B or C๋ผ๊ณ ํ์ ๋, ๐ซ A๊ฐ True์ด๋ฉด B๋ฅผ ๋ฐํํ๊ณ , A๊ฐ False์ด๋ฉด C๋ฅผ ๋ฐํํ๋ค. ๊ทธ ์ด์ ๋ ํ์ ํ and, or์ ๋์ ๋ฐฉ์ ๋๋ฌธ์ด๋ค.
โ Python์ ๋ ผ๋ฆฌ ์ฐ์ฐ์ and, or ๋์ ๋ฐฉ์
1. and ์ฐ์ฐ์:
โช A and B ํํ์์์ A๊ฐ False๋ก ํ๊ฐ๋๋ฉด B๋ฅผ ํ๊ฐํ์ง ์๊ณ A๋ฅผ ๋ฐํํ๋ค.
โช A๊ฐ True๋ก ํ๊ฐ๋๋ฉด B๋ฅผ ํ๊ฐํ ํ B์ ๊ฐ์ ๋ฐํํ๋ค.
2. or ์ฐ์ฐ์:
โช A or B ํํ์์์ A๊ฐ True๋ก ํ๊ฐ๋๋ฉด B๋ฅผ ํ๊ฐํ์ง ์๊ณ A๋ฅผ ๋ฐํํ๋ค.
โช A๊ฐ False๋ก ํ๊ฐ๋๋ฉด B๋ฅผ ํ๊ฐํ ํ B์ ๊ฐ์ ๋ฐํํ๋ค.
๐ ๋งจ ์ ์ฝ๋์์ n == int(n**.5)**2 ๊ฐ True์ด๋ฉด int(n**.5+1)**2๋ฅผ ํ๊ฐํ๋ค. int(n**.5+1)**2 ์ด True์ด๋ฉด -1์ ํ๊ฐํ ๊ฒ๋ ์์ด `int(n**.5+1)**2` ๊ฐ์ ๋ฐํํ๋ค.
๐ n == int(n**.5)**2 ๊ฐ False์ด๋ฉด int(n**.5+1)**2๋ ํ๊ฐํ ๊ฒ๋ ์์ด -1์ ํ๊ฐํ๊ณ ๋ฐํํ๋ค.
์ฐธ๊ณ ๋ก -1๋ True์ด๋ค.
์ด ์ฝ๋๊ฐ True๋ False ๋์ ์ ์๋ฅผ ๋ฐํํ๋ ์ด์ ๋ ํ์ด์ฌ์ ๋
ผ๋ฆฌ ์ฐ์ฐ์(and, or)๊ฐ ๋ถ๋ฆฌ์ธ์ด ์๋ ์ค์ ํผ์ฐ์ฐ์์ ๊ฐ์ ๋ฐํํ๊ธฐ ๋๋ฌธ์ด๋ค. ๋ถ๋ฆฌ์ธ ๋ฐํ์ด ๋ชฉ์ ์ด๋ผ๋ฉด ==, is, <, > ๋ฑ ๋น๊ต ์ฐ์ฐ์๋ก ๋๋ด๋ ํํ๋ก ์ฐ๋ฉด ๋๋ค.
2๏ธโฃ ์ผํญ ์กฐ๊ฑด ํํ์
: ์กฐ๊ฑด์ ๋ฐ๋ผ ๋ค๋ฅธ ๊ฐ์ ๋ฐํํ๋ ๊ธฐ๋ฅ์ ํ๋ค.
์ด๊ฒ ๋ ๋ช ํํ๊ณ ์ง๊ด์ ์ธ ๊ฒ ๊ฐ๋ค.
import math
def solution(n):
return -1 if not math.sqrt(n).is_integer() else (math.sqrt(n)+1)**2
โ
์ผํญ ์กฐ๊ฑด ํํ์if not math.sqrt(n).is_integer() ์กฐ๊ฑด์ด ์ฐธ์ด๋ฉด -1์ ๋ฐํ, ๊ฑฐ์ง์ด๋ฉด (math.sqrt(n) + 1) ** 2 ๊ฐ์ ๋ฐํ.
3๏ธโฃ ๋ค๋ฅธ ์ธ์ด์์๋?
๋ค๋ฅธ ์ธ์ด์์๋ `and`๊ฐ ์ฒซ falsy ๊ฐ์ ๊ทธ๋๋ก ๋ฐํํ๊ณ `or`๊ฐ ์ฒซ truthy ๊ฐ์ ๊ทธ๋๋ก ๋ฐํํ๋๊ฐ?
๊ฒฐ๋ก ๋ถํฐ ๋งํ์๋ฉด, JavaScript๋ ๊ทธ๋ ๋ค. Ruby์ `||`๋ ์ฒซ truthy ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ค.
ํ์ง๋ง ๋๋ถ๋ถ์ ์ ์ ํ์ ์ธ์ด(C/Java/C#/Go ๋ฑ)๋ boolean๋ง ๋ฐํํ๋ค.
์ ์ ํ์ ์ธ์ด (Static Typed Language)
: ๋ณ์์ ํ์ ์ด ์ปดํ์ผ ์์ ์ ๋ฏธ๋ฆฌ ๊ฒฐ์ ๋๋ ์ธ์ด. (๋ณ์๋ฅผ ๋ง๋ค ๋ ํ์ ์ ๋ช ํํ ์ ์ธํด์ผ ํจ.)
e.g. ์์ ๋งํ ์์, Kotlin, TypeScript
๋์ ํ์ ์ธ์ด (Dynamic Typed Language)
: ๋ณ์์ ํ์ ์ด runtime์ ๊ฒฐ์ ๋จ.
let a = 10;
a = "hello";
a = true;
์ด์ฒ๋ผ ๋ณ์์ ํ์ ์ด ๋ฐ๋ ์๋ ์์.
์ฆ, JS, Python, Ruby์ ๊ฒฝ์ฐ์๋ or / and๊ฐ ๋ ผ๋ฆฌ ํ๋จ + ๊ฐ ์ ํ๊น์ง ํด์ฃผ๊ณ
Java, C#, Go ๊ฐ์ ์ ์ ํ์ ์ธ์ด์ ๊ฒฝ์ฐ์๋ or / and๊ฐ ๋ ผ๋ฆฌ ํ๋จ๋ง ํ๋ค. ๊ฒฐ๊ณผ๋ boolean์ด๋ค.