10807

N = int(input())
N_list = list(map(int, input().split()))
v = int(input())

print(N_list.count(v)) # count라는 함수를 통해서 구하고 싶은 숫자의 개수를 알 수 있음.

10871

N, X = map(int, input().split())

A = list(map(int, input().split()))

for i in A:
    if i < X:
        print(i, end=" ")
    else:
        pass

10818

N = int(input())
N_list = list(map(int, input().split()))
print(min(N_list), max(N_list))

2562

ll = []
for i in range(9):
    i = int(input())
    ll.append(i)
print(max(ll))
print(ll.index(max(ll))+1)

개인적으로 2562번에서 많이 막혀서 설명을 적겠다.

일단 첫째 줄에 비어있는 리스트를 만들어 준 이유는 반복문을 통해서 빈 리스트에다가 내가 원하는 값을

입력하기 위해서 넣어준 것이다. 그래서 그 넣어주는 함수가 append여서 ll.append(i)라고 입력해준 것이다. 

'알고리즘' 카테고리의 다른 글

백준 파이썬 - 문자열 1  (1) 2023.11.21
백준 파이썬 - 배열 2  (2) 2023.10.03
백준 파이썬 - 2525  (0) 2023.07.06
백준 파이썬 - 1330, 9498, 2753, 14681, 2884  (0) 2023.07.05
백준 파이썬 - 10430, 2588, 10171, 10172  (0) 2023.06.09

이 문제 솔직하게 말하면 11번 틀리고 처음부터 다시 알고리즘 세워보자. 해서 차근차근히 하니깐 푼 문제라서

따로 다루겠다.

 

일단 내가 그 전에 했던 알고리즘들을 보면 왜 안 되는지 보도록 하겠다.

A, B = map(int, input().split())
C = int(input())

if B+C < 60:
    B = B+C
    
elif B+C >= 60:
    plus_A = (B+C) // 60
    plus_B = (B+C) % 60
    A += plus_A
    
    if A >= 24:
        A = abs(24-A)
        B = plus_B

    else:
        if (B+C) % 60 == 0:
            B = 0
print("{} {}".format(A,B))

자자 여기서 보면 첫째 줄에 map을 통해서 잘 변수를 설정해줬고 두 번째 줄에도 변수를 잘 설정해주었다. 

그런데 문제는 if 절부터 시작이었는데 여기까지도 괜찮았는데 elif 절부터 약간 꼬이기 시작했다.

elif  - if 를 보면 abs(24-A)가 잘못된 거 같다. 솔직히 백준의 예제를 입력하고 출력하면 잘 나왔는데 이건 A가 24~48까지 있을 거라고 생각한 나의 착각이었고 A는 24, 47, 80 뭐든지 가능한데 24-A 절댓값을 하면 안 나오는게 당연하다.

그래서 고친 결과는! 

H, M = map(int, input().split())
T = int(input())

correct_M = M + T

if correct_M >= 60:
    M = correct_M % 60
    H += correct_M // 60
    
    if H >= 24:
        H = H % 24

else:
    M = M + T
print(H, M)

이거다.

절댓값 부분을 나머지를 구하는 부분으로 바꾸고 쓸데없이 코딩한 부분은 없애고 하니 이렇게 깔끔하게 나왔다.

 

인터넷의 도움을 받지 않고 혼자 풀어서 기분이 굉장히 좋은 상태이다.

오늘 잘 잘 것 같다. 흠흠

1330

문제의 입력에서 첫째 줄에 A와 B가 주어진다고 했는데 A와 B는 공백 한 칸으로 구분되어져 있다고 했으니 split() 을 생각하고 map을 통해 엮어 준다고 생각하면 좋을 것 같다. 따라서 코드는 

a, b = map(int, input().split())

if a > b:
    print('>')
   
elif a == b:
    print('==')
    
elif a < b:
    print('<')

 

9498

간단한 문제이다.

x = int(input())

if 90 <= x <= 100:
    print("A")
   
elif 80 <= x <= 89:
    print("B")
    
elif 70 <= x <= 79:
    print("C")

elif 60 <= x <= 69:
    print("D")

else:
    print("F")

 

2753

윤년을 구하는 문제인데 이것도 9498 문제랑 비슷한 문제이다.

x = int(input())

if x % 4 == 0 and x % 100 != 0:
    print('1')
    
elif x % 400 == 0:
    print('1')

else:
    print('0')

 

14681

사분면 고르기 문제이다. 어려워 보일 수 있으나 앞에 문제를 풀어냈으면 충분히 풀 수 있는 것 같다. 

입력에서 첫째 줄, 둘째 줄을 나누었기 때문에 map을 사용하지 않고 x로 한 줄 y로 한 줄 잡아서 풀어나가면 된다.

x = int(input())
y = int(input())

if x > 0 and y > 0:
    print(1)
    
elif x < 0 and y > 0:
    print(2)
    
elif x < 0 and y < 0:
    print(3)
    
elif x > 0 and y < 0:
    print(4)

 

2884

알람시계 문제인데 어려워 하지 말고 차근차근히 풀면 풀 수 있다.

일단은 입력에서 첫째 줄에 변수를 두 개 할당해라고 하였기 때문에 map을 사용해주면 되는데

입력과 같은 형태로 출력된다고 하였다. 따라서 변수를 계속 사용해 주면 되는데 다음과 같다. 

H, M = map(int, input().split())   # map을 통해서 첫째 줄에 변수 할당

if M >= 45:     
    M -= 45    # 변수 그대로 사용
else:
    M = 60 + M - 45
    if H >= 1:
        H -= 1    # 변수 그대로 사용
    else:
        H = 23
    
print(H,M)

 

'알고리즘' 카테고리의 다른 글

백준 파이썬 - 배열 2  (2) 2023.10.03
백준 파이썬 - 배열  (0) 2023.09.16
백준 파이썬 - 2525  (0) 2023.07.06
백준 파이썬 - 10430, 2588, 10171, 10172  (0) 2023.06.09
파이썬 - 입출력과 사칙연산(10869)  (0) 2023.02.18

10430

예제 입력에서 보면 5 8 4 로 한 줄에 변수가 다 적혀있어서 

a = int(input())
b = int(input())
c = int(input())

이렇게 하면 안된다.

 

그럼 어떻게 해야하나

a, b, c = map(int, input().split())

이렇게 해야한다. 

여기서 input().split()로 list가 만들어지는데, map은 이 만들어진 list의 요소를 int(정수)로 바꾼다는 거다. 

그러면 한 줄로 각 변수에 정수값이 할당된다. 

 

그래서 정답은

a, b, c = map(int, input().split())   

print((a+b)%c)
print(((a%c)+(b%c))%c)
print((a*b)%c)
print(((a%c)*(b%c))%c)

 

2588

예제 입력에서 보면 472 \n 385 두 줄로 변수가 적혀있다. 

그럼 그냥 

a = int(input())
b = input()

이렇게 하면 된다.

근데 a는 정수형으로 하고 b는 왜 이렇게 했냐면 

문제에서 보면 초등학교 때 배웠던 (세 자리 수) × (세 자리 수)로 계산하라고 되어 있기 때문에

472 * 5 , 472 * 8, 472 * 3 이걸 따로 해줘야 한다.

그래서 문자열로 만들어서 인덱스를 붙여서 하나씩 가져오고 가져온 값을 정수로 바꿔주면 된다. 

a = int(input())
b = input()

print(a*int(b[2]))
print(a*int(b[1]))
print(a*int(b[0]))
print(a*int(b))

여기서 보면 

b는 문자열이다.

b = '583'으로 저장되었다. 이렇게 되면 b는 list로 생각할 수 있다.

그니깐 ['5','8','3'] 이런 식으로 할 수 있겠네 라고 생각하면 쉽다.

그래서 인덱스를 붙여서 하나씩 값을 가져와서 정수형으로 만들어주고

그 값을 a에다가 곱해주면 해결된다.

 

10171

\(역슬래시) 출력은 \\ 

'(작은따옴표) 출력은 " ' "

print("\\    /\\")
print(" )  ( ')")
print('(  /  )')
print(" \\(__)|")

 

10172

\(역슬래시) 출력은 \\

'(작은따옴표) 출력은 " ' "

"(큰따옴표) 출력은 \" 

print("|\\_/|")
print("|q p|   /}")
print("( 0 )\"\"\"\\")
print("|\"^\"`    |")
print("||_/=\\\\__|")

'알고리즘' 카테고리의 다른 글

백준 파이썬 - 배열 2  (2) 2023.10.03
백준 파이썬 - 배열  (0) 2023.09.16
백준 파이썬 - 2525  (0) 2023.07.06
백준 파이썬 - 1330, 9498, 2753, 14681, 2884  (0) 2023.07.05
파이썬 - 입출력과 사칙연산(10869)  (0) 2023.02.18

document.title, document.body 을 호출 가능 (console 창에서)

document는 우리가 javascript 에서 HTML에 접근할 수 있는 방법이다. 

document는 브라우저에서 그냥 사용할 수 있는 object임.

 

document.getElementById("title")

getElementById => string을 전달받는 함수 

 

const title = document.getElementById("title") 
#getElementById는 HTML에서 id를 통해 element를 찾아준다.

console.dir(title)
<body>
    <h1 id="title">Grab me!</h1>
    <script src="app.js"></script>
</body>

HTML을 가지고 오는거지만, 그걸 JavaScript에서 하고 있음.

JavaScript는 이 HTML element를 가지고 오지만, HTML 자체를 보여주지는 않음.

 

 

element를 찾고 나면 그 HTML에서 뭐든지 바꿀 수 있음. 

const title = document.getElementById("title")

title.innerText = "Got you!" # element의 innerText를 바꿀 수도 있음.

console.log(title.id)         # element의 id와 className을 가져오는 것도 가능.
console.log(title.className)

 

따라서 우리는 이제 HTML에서 항목들을 가지고 와서 JavaScript를 통해 항목들을 변경할 수 있음.

 

예를 들어, 우리가 Hello DS처럼 유저에서 Hello라고 말하려면 우리는 HTML에서 title을 가지고 와야하고 유저명 또한 가져와서 해당 title 안에 넣어줘야함. 

' > 자바스크립트' 카테고리의 다른 글

자바스크립트 (2-3 return, prompt, if)  (0) 2023.03.16
자바스크립트 (2 - 2 object, function)  (2) 2023.03.16
자바스크립트 (2 - 1)  (2) 2023.03.16
자바스크립트 (1 - 준비)  (0) 2023.03.13

Anaconda(Miniconda) 플랫폼 : 다양한 데이터 분석 패키지를 지원하는 플랫폼

Jupyter Notebook : 웹 브라우저 기반 코딩 결과를 빠르게 확인할 수 있는 에디터

 

conda create -n (자기가 하고 싶은 이름) python=3.7

이런 식으로 가상환경 설치해줌.

 

가상환경을 활성화 시키기 

conda activate (자기가 하고 싶은 이름)

 

가상환경을 비활성화 시키기

conda deactivate 

 

필요한 거 설치

pip install numpy

pip install pandas matplotlib jupyter notebook

밑줄 친 부분은 꼭 가상환경에서 설치해야함.

 

 

'프로그래밍 > Python' 카테고리의 다른 글

Python 문자열 정렬, set  (0) 2023.10.08
Python zip, enumerate 함수 사용  (2) 2023.10.08
Python 비트 연산자 정리  (0) 2023.10.07
파이썬 매개변수 기본값 설정  (0) 2023.10.06
파이썬 (~while)  (0) 2023.04.25
# 대화창 만들기
"""
print("안녕하세요?")
name = input("이름을 말해주세요. ")
age = input("나이는 어떻게 되시나요? ")
print()

print("입력하신 정보는 \n이름은 {}, 나이는 {}입니다." .format(name, age))
print()

reply = input("맞으면 '예', 틀리면 '아니오'라고 입력해주세요. ")

if reply == "예":
    print("반갑습니다. {}씨 !!".format(name))
else :
    print('잘못된 정보입니다. ')
"""

# 온도 계산기
"""
celsius = int(input("섭씨 온도를 입력하세요 : "))
fahrenheit = (9/5) * celsius + 32

print("섭씨 {}도는 화씨 {:.0f}도입니다.".format(celsius, fahrenheit))
"""

# 몫과 나머지 계산
"""
print("두 개의 정수를 입력하세요.")

a = int(input())
b = int(input())

print("{} / {} 의 몫은 {}".format(a,b,a//b))
print("{} / {} 의 나머지는 {}".format(a,b,a%b))
"""

# 소금물의 농도 구하기
"""
print("소금물의 농도를 구하는 프로그램입니다.")

salt = float(input("소금의 양은 몇 g입니까? "))
water = float(input("물의 양은 몇 g입니까? "))

concentration = salt / (salt + water) * 100

print("소금물의 농도: {}".format(concentration))
"""

# BMI 구하기
"""
print("BMI를 구하는 프로그램입니다.")

a = input(" 계속하려면 아무키나 누르세요...")

height = float(input("키(cm) : "))
weight = float(input("몸무게(kg) : "))

BMI = weight/(height*0.01)**2

print("당신의 BMI : {:.2f}".format(BMI))
"""

# 성적처리 결과 출력하기
"""
name = input()
kor, math, music = int(input()),int(input()),int(input())
avg = (kor + math + music) / 3

print('\n"%s"님 성적 처리 결과입니다' % name)
print('-' * 30)
print('%s\t%s\t%s'%(" 과목","점수", "평균과의 차이"))
print('-' * 30)
print('국어 :{}  {:+5.1f}'.format(kor,kor-avg))
print('수학 :{}  {:5.1f}'.format(math,math-avg))
print('음악 :{}  {:5.1f}'.format(music,music-avg))
print('-' * 30)
print('평균 >> %5.1f' % avg)
"""

# 다항함수의 결과를 구하는 프로그램
"""
x, fx = 0, 0

x = int(input("x의 값을 입력하세요 : "))

fx = x**5-4*x**2-2*x+1/13
print("f({}) = {:.2f}".format(x, fx))
"""

# 동전 교환 프로그램
"""
w500, w100, w50, w10 = 0, 0, 0, 0

money = int(input("교환할 돈은 얼마?"))

w500 = money // 500
w100 = (money - 500*w500) // 100
w50 = (money - 500*w500 - 100*w100) // 50
w10 = (money - 500*w500 - 100*w100 - 50*w50) // 10
a = money % 10

print("500원의 개수: {}개\n100원의 개수: {}개\n50원의 개수: {}개\n10원의 개수: {}개\n바꾸지 못한 잔돈: {}원".format(w500,w100,w50,w10,a))
"""

# 윤년 계산 프로그램
"""
year = int(input("연도를 입력하세요 : "))

if year % 4 == 0 and year % 100 != 0:
    print("{}년은 윤년입니다.".format(year))

elif year % 400 == 0:
    print("{}년은 윤년입니다.".format(year))

else:
    print("{}년은 윤년이 아닙니다.".format(year))
"""

# 간단한 산술 계산기 프로그램
"""
x, y, op = 0, 0, ''

x = int(input("첫 번째 수를 입력하세요: "))
op = input("계산할 연산자를 입력하세요: ")
y = int(input("두 번째 수를 입력하세요: "))

if op == "+":
    total = x + y
    print("{} {} {} = {} 입니다.".format(x,op,y,total))

elif op == "-":
    total = x - y
    print("{} {} {} = {} 입니다.".format(x,op,y,total))

elif op == "*":
    total = x * y
    print("{} {} {} = {} 입니다.".format(x,op,y,total))

elif op == "/":
    total = x / y
    print("{} {} {} = {:.2f} 입니다.".format(x,op,y,total))
    
elif op == "%":
    total = x % y
    print("{} {} {} = {} 입니다.".format(x,op,y,total))

elif op == "//":
    total = x // y
    print("{} {} {} = {} 입니다.".format(x,op,y,total))

elif op == "**":
    total = x ** y
    print("{} {} {} = {} 입니다.".format(x,op,y,total))

else:
    print("알 수 없는 연산자입니다.")
"""

# 두 점 사이의 거리 구하기
"""
x1 = int(input("x1:"))
y1 = int(input("y1:"))
x2 = int(input("x2:"))
y2 = int(input("y2:"))

distance = ((x1-x2)**2 + (y1-y2)**2)**0.5

print("두 점 사이의 거리= {:.2f}".format(distance))
"""

# 놀이공원 입장료 구하기
"""
fee = 30000
age = int(input("나이 입력: "))

if age < 8:
    print("입장료는 무료입니다.")

elif age < 15 and age >= 8:
    print("입장료는 {}원입니다.".format(int(fee-fee*0.2)))

elif age >= 65:
    print("입장료는 {}원입니다.".format(int(fee-fee*0.5)))

else:
    print("입장료는 {}원입니다.".format(fee))
"""

# 합격 또는 불합격 표현하기
"""
first, second, interview, avg = 0, 0, 0, 0

first = int(input('1차 점수는?'))
second = int(input('2차 점수는?'))
interview = int(input('면접 점수는?'))

avg = (first + second + interview) / 3

if avg >= 80 and first >= 60 and second >= 60 and interview >= 60:
    print("축하합니다. 합격입니다.")

else:
    print('불합격입니다.')
"""

# 계절 출력하기
"""
month, season = 0, ''
month = int(input("월 입력 : "))

if month >= 3 or month <= 5:
    season = '봄'

elif month >= 6 or month <= 8:
    season = '여름'

elif month >= 9 or month <= 11:
    season = '가을'
    
elif month == 12 or month == 1 or month == 2:
    season = '겨울'

else:
    print("잘못된 월입니다.")

if month >= 1 and month < 12:
    print("{}월은 {}입니다.".format(month,season))
"""

# 자연수에서 n의 배수 출력하기
"""
cnt = 0
n = 1

while n < 100:
    if n % 7 == 0:
        print("%2d"%n, end = " ")
        n = n + 1
        cnt = cnt + 1
        if cnt % 5 == 0:
            print()

    else:
        n = n + 1
        pass

print("\n")
print("100 미만의 7의 배수는 {}개".format(cnt))
"""

# 조건이 참인 동안 반복하기
"""
count, height = 0, 0

while count != 10:
    height = float(input("키는? "))

    if height >= 140:
        count = count + 1
        print("Yes~")

    else:
        print("No~")

print("Go~ 출발합니다!")
"""

 

return

> function으로 무언가를 해서 function에서 결과값을 갖고 싶을 때

> function이 function 밖과 소통하는 방법 

> console.log()를 찍지 않아도 코드 내에서 반환값을 받을 수 있다.

> return을 하면 function은 작동을 멈추고 결과 값을 return하고 끝나버린다. 

 

1. return을 쓰지 않았을 때

const age = 21;
function caculateKrAge (ageOfForeigner) {
    ageOfForeigner + 2;
}

const krAge = caculateKrAge(age);

console.log(krAge);

결과값이 나오지 않는다. 

 

2. return을 쓴다면 

const age = 21;
function caculateKrAge (ageOfForeigner) {
    return ageOfForeigner + 2;
}

const krAge = caculateKrAge(age);

console.log(krAge);

결과값이 나온다. 

이 내용을 해석하자면

const age = 21;
function caculateKrAge (ageOfForeigner) {
    return ageOfForeigner + 2;
}

const krAge = caculateKrAge(age);

console.log(krAge);

// krAge가 function calculateKrAge가 되는데 
// function의 인수가 age고 age는 21
// 따라서 21이 function의 ageOfForeigner이 된다.
// 그렇게 하면 function 내에서 계산을 해서 21 + 2 를 해서 23을 만들고
// 이걸 다시 function을 시작한 곳에다가 보낸다.
// 그러면 calculateKrAge가 23이 되고
// 그걸 console로 찍는거다.

 

이 방법을 적용해서 하나 더 이해해보기

const calculator = {
    plus: function (a, b){
        return a + b;
    },
    minus: function (a, b){
        return a - b;
    },
    times: function (a, b){
        return a * b;
    },
    divide: function (a, b){
        return a / b;
    },
    power: function (a, b){
        return a ** b;
    },
};

const plusResult = calculator.plus(2, 3);
const minusResult = calculator.minus(plusResult, 10);
const timesResult = calculator.times(10, minusResult);
const divideResult = calculator.times(timesResult, plusResult);
const powerResult = calculator.power(divideResult, minusResult);

prompt

> 아주 오래된 방법

> prompt로 사용자에게 어떤 창을 띄워주고 사용자가 말하는 걸 저장할 수 있다.

 

const age = prompt("How old are you?");

console.log(age);

이런 창이 뜬다. 근데 이 방법은 아주 오래된 방법이라서 요즘에는 잘 안 쓴다고 한다.

 

어쨌든 여기다가 만약에 232323을 넣는다. 그러면 console 창에

이런 식으로 뜨는데 그런데 이것의 타입이 숫자일까?

이게 무슨 타입인지 알고 싶으면 typeof를 쓰면 된다.

console.log(typeof age);

//typeof 변수의 타입을 보는 거라서 
//변수가 무슨 타입인지 헷갈릴 때 사용하면 된다.

실행하면

string으로 뜬다. 

 

그렇다면 string을 number로 바꿀 수는 없을까? ("23" > 23 이런 식으로)

parseInt 를 사용하면 된다. 

console.log(typeof "15", typeof parseInt("15"));

그런데 parseInt() 이 괄호 사이에 "123" 과 같이 안 넣고 "dsdsd" 이런 식으로 넣으면 

NaN이 나오는데 이건 not a number 이라는 뜻으로 parseInt() 는 "123" 이런 형식의 string 만 숫자로 바꿔줄 수 있다. 

 

number인지 아닌지는 isNaN (< 해석하면 is not a number이라는 뜻)이라는 function을 통해서도 가능하다. 

const age = parseInt(prompt("How old are you?"));

console.log(isNaN(age));

// age를 prompt로 사용자에게 물어보고 얻는 답을 parseInt로 
// 변환하고
// console로 찍어보는데 그 전에 isNaN을 통해서 age가 number이 맞는지 확인한다.

이게 무슨 말이냐 하면 

실제로 저걸 구현해보면 

이런 식의 창이 나올텐데

거기서 내가 만약에 숫자 15를 넣는다고 하면

console 창에 다음과 같이 뜬다.

isNaN의 결과값은 boolean으로 나타난다. 

따라서 결과값이 숫자가 아니라면 true로 나타나고 숫자라면 false로 나타나는거다.

위의 결과는 숫자를 내가 입력했기 때문에 console 창에 결과로 false가 나온 것이다. 

 

if(condition)

> condition은 boolean이어야 한다.

const age = parseInt(prompt("How old are you?"));

console.log(isNaN(age));
/// isNaN(age) 는 boolean으로 값을 준다.
/// 따라서 condition에 들어가는 거 가능.

if (isNaN(age)) {
    console.log("Please write a number.")
} else {
 	console.log("Thank you for writing your age")
}

// 여기서 사용자가 숫자를 치면 console 창에 아무 것도 뜨지 않고, 문자를 치면 console 창에 Please write a number.
// if 문은 안에 있는 condition이 true면 활성화
// 그게 아니면 else로 넘어가서 실행

> else if로 condition을 하나 더 추가하면서 코드를 작성할 수도 있다.

const age = parseInt(prompt("How old are you?"));

if (isNaN(age)) {
    console.log("Please write a number.");
} else if(age < 18) {
    console.log("You are too young.")
} else {
    console.log("You can drink.")
}

해석 if

1.

 일단 입력하는 칸에다가 hahahahhah이걸 치면 parseInt가 number로 바꿔주지 못한 채로 if로 넘어간다.

그 age 값이 숫자가 맞는지 확인한다. hahahahhah는 숫자가 아니기 때문에 if 의 (condition)이 true. true기 때문에

Please write a number을 console 창에 띄운다. 

 

2.

 숫자 12를 입력했다면 isNaN 여기서 false가 되고 if가 false 이기 때문에 else if로 넘어가는데 이 때 12는 18보다 작기 때문에 True. You are too young. 을 console창에 띄운다.

 

3.

 숫자 23을 입력했다면 else if도 false이기 때문에 you can drink를 console 창에 띄운다. 그리고 else 쪽으로 넘어가서 

console 창에 You can drink.를 띄운다.

 

else if를 통해 18세 이상 50세 이하 이런 식으로 할 수도 있다.

else if(age >= 18 && age <= 50){
    console.log("You can drink.")

여기서 &&이 우리말로 하면 그리고(and) 라는 뜻으로 18세 이상 50세 이하 이렇게 해석하면 된다.

&&는 둘 다 true 여야만 그 else if 절이 true 라는 뜻이 되고 else if 코드가 실행된다.

&& 대신에 ||을 넣으면 또는(or) 이라는 뜻이다. 

||는 둘 다 true가 아니고 하나만 true 여도 그 코드가 실행된다.

 

정리하면 이렇게 된다.

true || true === true
false || true === true
true || false === true
false || false === false

true && true === true
true && false === false
false && true === false
false && false === false

 

총 복습

const age = parseInt(prompt("How old are you?"));

if (isNaN(age) || age < 0) {
    console.log("Please write a real positive number.");
} else if(age < 18) {
    console.log("You are too young.");
} else if(age >= 18 && age <= 50){
    console.log("You can drink.");
} else if(age > 50 && age <= 80){
    console.log("You should exercise.");
} else if(age === 100){    
    console.log("Wow, you are wise.")    // age가 100이 아니라면을 표현하고 싶으면 === 을 !==으로
} else if(age > 80){
    console.log("You can do whatever you want.");
}

Object

> 게임 같은 거를 생각하면 player 에다가 경험치, 이름, 인기도 이런 거를 설정할텐데

const playerName = "daesung"
const playerFat = "little bit"
const playerage = 23

이런 식으로 설정하면 번거롭다.  그래서 object 를 할 건데,

 

> object는 이런 식으로 설정

// 중괄호가 들어간다는 거 기억
// object 안과 밖의 규칙은 다르다. 밖에서는 = 을 사용하지만, 안에서는 : 을 사용
// 한 개의 특성(예, name : "daesung")을 설정하면 다른 특성도 올 수 있으니깐 그 뒤에는 ,를 사용한다.
// player의 name에 접근하고 싶을 때는 player.name 또는 player["name"]

const player = {
    name: "daesung",
    points: 10,
    fat: true,
}
console.log(player);
console.log(player.name);

 

object안의 내용물을 업데이트 하는 것도 가능함. 

const player = {
    name: "daesung",
    points: 10,
    fat: true,
}

player.fat = false;
console.log(player);

근데 여기서 의문점 

const 로 변수를 잡으면 데이터를 바꿀 수 없다고 했지 않나?

 - 맞는데 우리가 바꾼 건 player 라는 object 안에 있는 fat을 바꾼 거라서 상관이 없다. 만약 player 전체의 값을 바꿀려고 한다면 에러가 뜬다. 

 

추가도 가능하다.

const player = {
    name: "daesung",
    points: 10,
    fat: true,
}

// 별 다른 설정 없이 그냥 object를 불러서 내가 넣고 싶은 데이터 이름 값 넣으면 된다.
player.lastName = "sim";
console.log(player);

 

숫자를 더하는 것도 가능하다.

const player = {
    name: "daesung",
    points: 10,
    fat: true,
};
console.log(player);
player.lastName = "sim";

// 아래와 같이 코드를 쓰면 25라는 결과를 얻을 수 있다.
player.points = player.points + 15;
console.log(player.points);

 

 

fuction

> 반복해서 사용할 수 있는 코드 조각

> alert(), push() 등과 같이 괄호가 우리가 function을 실행시키는 방법 

function sayHello(){
    console.log("Hello my naem is C");
}

sayHello();

> argument는 function을 실행하는 동안 어떤 정보를 function에게 보낼 수 있는 방법

function sayHello(){
    console.log("Hello my naem is C");
}

// 해석: sayHello라는 함수를 누르고 그 함수에다가 "daesung"이라는 데이터를 보낸다.
sayHello("daesung");

 

그럼 어떻게 받느냐??

// function sayHello ()에 nameOfPerson을 넣었는데 이건 sayHello라는 함수로 보낸 데이터가 
// nameOfPerson이라는 variable 안에 저장된다는 것
// 그리고 nameOfPerson은 function sayHello() 안에 있기 때문에 function 안에서만 사용해야함.
// 만약 
// function sayHello(nameOfPerson){
//   	console.log(nameOfPerson);
// }
// console.log(nameOfPerson)을 쓴다면 출력되지 않으니 조심!!!
 
function sayHello(nameOfPerson){
    console.log(nameOfPerson);
}

sayHello("daesung");
sayHello("sim");
sayHello("ds");

이렇게 해서 출력을 하면 

이런 식으로 나온다. 

 

argument를 2개 설정할 수도 있다.

function sayHello(nameOfPerson, age){
    console.log(nameOfPerson, age);
}

sayHello("daesung", 10);
sayHello("sim", 23);
sayHello("ds", 21);

더 나아가서 이런 것들도 가능하다.

function sayHello(nameOfPerson, age){
    console.log("Hello my name is " + nameOfPerson + " and I'm " + age);
}

sayHello("daesung", 10);
sayHello("sim", 23);
sayHello("ds", 21);
function plus(firstNumber, secondNumber){
    console.log(firstNumber + secondNumber);
}
function divide(a, b){
    console.log(a/b);
}
plus(8, 60);
divide(98, 20);

 

그런데 console.log() 이런 식으로 하는 것처럼 player.sayHello() (player가 object일 때)와 같은 것도 가능하지 않을까?

가능하다.

// 코드 해석
//
// player를 object로 잡고 
// 설정할 function을 넣는데 형식은 sayHello : function() {} 
// 이런 식으로 그래서 만약에 player 안에 있는 fuction을 부를 때는 
// player.sayHello() 이런 식으로 부르고 이 funtion에다가 보내고 싶은
// argument를 적고 보낸다. 그럼 function 안에 있는 otherPersonName에 저장되어서
// function을 실행한다.

const player = {
    name: "daesung",
    sayHello: function (otherPersonName) {
        console.log("hello! " + otherPersonName + " nice to meet you!");
    },
};

player.sayHello("daesung");

숫자와 문자

> 자바스크립트는 숫자는 그대로 쓰면 인식한다.

> 문자는 " '', ' ' 이 안에다가 써야 한다. 문자로만 이루어진 텍스트를 string이라고 부른다.

 

변수 설정

> 변수 앞에 const (const 대신 let, var을 붙여줘도 됨.) 를 붙여주고 자신이 원하는 변수 이름을 설정하면 된다.

> 변수가 길 때 띄어쓰기를 해주고 싶으면 아래 코드 myName 과 같이 띄어쓰기 해주고 싶은 부분의 뒤에 문자를 대문자로히면 된다.

const a = 5;
const b = 2;

const myName = "daesung";

cf. const와 let의 차이점

> const 는 constant(상수)라는 것이고, constant 는 값이 바뀔 수 없다.

> let 은 새로운 것을 생성할 때 사용, 따라서 처음에 let으로 변수를 설정하면 따로 let을 앞에 안 해도 나중에 수정이 가능.

 

예시

1. let으로 myName을 변수로 설정할 때

const a = 5;
const b = 2;
let myName = "daesung";

console.log(a + b);
console.log(a * b);
console.log(a / b);
console.log("hello " + myName) ;

myName = "musung"

console.log("your new name is " + myName)

2. const 로 myName을 변수로 설정할 때.

const a = 5;
const b = 2;
const myName = "daesung";

console.log(a + b);
console.log(a * b);
console.log(a / b);
console.log("hello " + myName) ;

myName = "musung";

console.log("your new name is " + myName)

차이점을 분명하게 하자.

 

 

출력

> console.log () 를 통해서 브라우저의 console 창에 출력되는지 확인한다. 

console.log(a + b);
console.log(a * b);
console.log(a / b);
console.log("hello " + myName) ;

 

타입 

 

boolean

> true, false 두 가지가 있다.

 

null

> 아무 것도 없다는 상태, 비어있음

> 변수 안에 어떤 것이 없다는 상태를 확실히 하기 위해 쓴다.

const amIFat = null;
console.log(amIFat);

이렇게 되면 amIFat 은 아무 것도 없는 상태인거다.

 

undefined

> 값이 들어가지 않은 상태

let something;
console.log(something);

something이라는 공간은 있는데 그곳에 값이 들어가지 않은 것이다.

 

array

> 데이터를 나열할 수 있도록 해준다.

> array 는 [ ] 안에 자신이 원하는 데이터를 넣어주면 된다.

> 하나의 variable 안에 데이터의 list를 가지는 게 목적

 

const daysofweek = [mon , tue , wed , thu , fri , sat , sun] ;

const nonsense = [1, 2, "hello", false, null, true, undefined, "daesung"]

console.log(daysofweek, nonsense)

 

정렬 안의 5번째 데이터를 찾고 싶다면 아래와 같은 식으로 찾으면 된다. 

cf. 컴퓨터는 0부터 센다.

console.log(daysofweek[4])

 

array 안에 항목 하나를 추가하고 싶을 때

// () 안에다가 내가 원하는 데이터 입력하기
daysofweek.push()

 

 

+ Recent posts