728x90
반응형

오늘 배운 것

1. 어레이와 링크드리스트

    조회할땐 배열 Array

    추가 및 사입할땐 연결리스트 LinkedList

2. 클래스

    클래스는 객체를 생성하기 위한 템플릿이다. (CSS의 클래스와 다름!)
    class를 통해 원하는 구조의 객체 틀을 짜놓고, 비슷한 모양의 객체를 공장처럼 찍어낼 수 있다.
    쉽게 생각해서 클래스 = 붕어빵 기계, 그리고 객체 = 붕어빵 으로 보면 된다.- 파이썬 기초문법

3. 이진탐색

    이진 탐색 탐색의 범위를 절반씩 좁혀가며 데이터를 탐색하는 알고리즘입니다.

    (순차탐색은 처음부터 끝까지 가는 알고리즘)

4. 재귀함수

    함수 안에서 함수 자기자신을 호출하는 방식을 재귀호출(recursive call)이라고 합니다.

    재귀호출은 일반적인 상황에서는 잘 사용하지 않지만 알고리즘을 구현할 때 매우 유용합니다.

    보통은 무한루프에 빠질 수 있으니, 빠져나갈 수 있는 if문을 써야할지 생각해봐야 합니다.

 

오늘 느낀 점

input = "소주만병만주소"

def is_palindrome(string):
    if len(string) <= 1:
        return True
    if string[0] != string[-1]:
        return False

    return is_palindrome(string[1:-1])

print(is_palindrome(input))

재귀함수 부분에서

마지막 return 값이 이해가 안됬다.

맨끝부분을 빼야하니 [1 : -2]가 아닌가? 란 생각에 계속 빠졌다.

팀원에게 물어보고 대화를 하다보니 머릿속에 !!! 느낌표가 생겼다.

[1(이상) : -1(미만)] 이기 때문에 생긴 내머릿속 오류였다.

 

첫 재귀함수 루프를 돌때,

[1]은 [주]를 뜻할 것이고

[-1]은 [소]니까 틀린게 아니야?! 가 아니고,

-1 미만이기에 -2인 끝에서 두번째를 출력하는 것이 맞다!

 

그러므로 string[1:-1]은 두번째 값과, 끝에서 2번째 값을 출력하는 것이다.

슬라이싱은 이상(>=) 과 미만 (<)이기에 헷갈릴 수 있는 부분이고

답답했던 부분을 깨달아서 뿌듯한 하루였다.

728x90
반응형

'일기 > TIL' 카테고리의 다른 글

TIL: Today I Learned 11일차  (0) 2022.11.28
TIL: Today I Learned 10일차  (0) 2022.11.25
TIL: Today I Learned 8일차  (0) 2022.11.23
TIL: Today I Learned 7일차  (0) 2022.11.22
TIL: Today I Learned 6일차  (0) 2022.11.21
728x90
반응형

오늘 배운 것

1. array와 링크드 리스트

2. 클래스

 

 

 

오늘 느낀 점

- 파이썬, 자바스크립트를 끝내고 자료구조와 알고리즘을

  넘어오면서 머리가 지끈거리기 시작했다.

  알고리즘을 도출해내는 과정도 어렵지만

  그걸 코딩으로 실천하는 과정도 너무 어렵다ㅠㅠㅠㅠ

 

- 현재 1주차 끝부분부터 2주차 초기 부분까지

  간신히 이해할듯말듯(코딩은 따라하기만..)

  앞으로 어떻게 해야할지 어두컴컴한 느낌이다.

  열심히 해야겠다는 마음은 있지만 커다란 벽을 만난 느낌

  일단 더 열심히 해야겠다ㅠㅠ

728x90
반응형

'일기 > TIL' 카테고리의 다른 글

TIL: Today I Learned 10일차  (0) 2022.11.25
TIL: Today I Learned 9일차  (0) 2022.11.24
TIL: Today I Learned 7일차  (0) 2022.11.22
TIL: Today I Learned 6일차  (0) 2022.11.21
TIL: Today I Learned 5일차  (0) 2022.11.18
728x90
반응형

소수 찾기 파이썬 알고리즘 문제

input = 20


def find_prime_list_under_number(number):
    prime_list = []
    for n in range(2,number+1):
        for i in range(2,n):
            if n % i == 0:
                break
        else:
            prime_list.append(n)

    return prime_list


result = find_prime_list_under_number(input)
print(result)

1. 1은 소수가 아니므로 건너뛴다.
2. 자기 자신보다 1만큼 작은 수까지 반복문을 돌리고,
나누어 떨어지는 값이 있다면 소수가 아니다.
3. 나누어 떨어지는 값이 없다면 소수다.

 

숫자 최소 뒤집기(모두 000000, 111111로 만들수 있는 최소 뒤집기 횟수 구하기)

input = "011110"


def find_count_to_turn_out_to_all_zero_or_all_one(string):
    count_to_all_zero = 0
    count_to_all_one = 0

    if string[0] == '0':
        count_to_all_one += 1
    elif string[0] == '1':
        count_to_all_zero += 1

    for i in range(len(string) - 1):
        if string[i] != string[i + 1]:
            if string[i + 1] == '0':
                count_to_all_one += 1
            if string[i + 1] == '1':
                count_to_all_zero += 1

    return min(count_to_all_one, count_to_all_zero)


result = find_count_to_turn_out_to_all_zero_or_all_one(input)
print(result)
728x90
반응형
728x90
반응형

오늘 배운 것

1. new연산자
new 라는 의미는 영역(block)을 지정하여 함수 내부의 정의된 내용을 실행하여 주는 의미
조금 더 쉽게 접근하면, "new 연산자를 사용해야만 함수 내부의 내용을 변수에 대입 할 수 있다."

2. 생성자(constructor)
객체가 '생성'이 될 때 자바스크립트 내부에서 호출이 되는 함수

3. 클래스(class)
클래스는 객체를 생성하기 위한 템플릿이다. (CSS의 클래스와 다름!)
class를 통해 원하는 구조의 객체 틀을 짜놓고, 비슷한 모양의 객체를 공장처럼 찍어낼 수 있다.
쉽게 생각해서 클래스 = 붕어빵 기계, 그리고 객체 = 붕어빵 으로 보면 된다.- 파이썬 기초문법

(https://pyoja.tistory.com/62)

- 자바스크립트 문법 진행중

 

오늘 느낀 점

- CSS class랑 js class랑 개념이 혼동되었는데 오늘 좀 이해가 되었고,

  그외 new연산자, 생성자도 좀 더 파고 들어서 깨달은 것들이 있다.

  뭔가 모호한 점이 있다면 파고들어서 개념을 더 익히는게 앞으로 공부할 때 더 도움될 것 같다.

728x90
반응형

'일기 > TIL' 카테고리의 다른 글

TIL: Today I Learned 9일차  (0) 2022.11.24
TIL: Today I Learned 8일차  (0) 2022.11.23
TIL: Today I Learned 6일차  (0) 2022.11.21
TIL: Today I Learned 5일차  (0) 2022.11.18
TIL: Today I Learned 4일차  (0) 2022.11.17
728x90
반응형

1주차 문제 : 배열에서 최대값 구하기

input = [3, 5, 6, 1, 2, 4]


def find_max_num(array):
    max_num = array[0]
    for num in array:
        if num > max_num:
            max_num = num
    return max_num

result = find_max_num(input)
print(result)
input = [3, 5, 6, 1, 2, 4]

def find_max_num(array):
    for num in array:
        for compare_num in array:
            if num < compare_num:
                break
        else:
            return  num

result = find_max_num(input)
print(result)

 

728x90
반응형
728x90
반응형

https://www.notion.so/bd5a947d2d634d44b7545597579d9672#4cf35bf052b44dd2a23420b9687786d8

[스파르타코딩클럽] 파이썬 문법 뽀개기

 

[스파르타코딩클럽] 자바스크립트 문법 뽀개기

매 주차 강의자료 시작에 PDF파일을 올려두었어요!

www.notion.so

Class 선언 [CSS의 클래스와 다른 의미! 객체지향!]

클래스는 객체를 생성하기 위한 템플릿이다.

class를 통해 원하는 구조의 객체 틀을 짜놓고, 비슷한 모양의 객체를 공장처럼 찍어낼 수 있다.

쉽게 생각해서 클래스 = 붕어빵 기계, 그리고 객체 = 붕어빵 으로 보면 된다.

class Notebook {
	constructor(name, price, company) {
		this.name = name
		this.price = price
		this.company = company
	}
}
class Shop {
  constructor (color , size ,price) {
    this.color = color
    this.size = size
    this.price = price
  }
  
    printInfo(){
    console.log(`색상: ${this.color}, 사이즈: ${this.size}, 가격: ${this.price}`)
  }
}

const shop = new Shop('black', 'Large', 20000)

shop.printInfo()

 

1. class 키워드와 클래스명
    class는 클래스를 선언하는 문구이고 그 뒤에 바로 클래스 명이 나옵니다. 클래스명도 마치 변수명처럼 내가 표현하고자 하는 데이터를 잘 나타낼 수 있는 이름이 좋겠죠? 위의 예에서 Notebook 대신 Person 같은 이름을 쓴다면 다른 사람들이 코드를 봤을 때 이상하다고 생각할 겁니다.
    
2. 생성자 (constructor)
    중괄호 안에는 생성자라는 것을 적어줍니다. 혹시 생성자가 함수와 많이 비슷하다는 것 눈치채셨나요? 이 생성자는 말 그대로 나중에 객체가 '생성'이 될 때 자바스크립트 내부에서 호출이 되는 함수라고 생각해주시면 됩니다. 생성자를 좀 더 살펴보면 3개의 매개변수를 정의했고 각각의 이름은 name, price, company 네요.
    
3. this와 속성(property)
    생성자의 바디를 보면 this 라는 키워드가 등장하네요. 이 this는 클래스를 사용해 만들어질 객체 자기 자신을 의미하고 this 뒤에 붙는 name, price, company는 객체의 속성입니다. 
    생성자의 바디에서는 함수 호출시 전달할 매개변수 name, price, compay를 객체의 속성 name, price, company에  각각 할당하고 있는 것입니다.

 

객체 만들기

const 변수명 = new 클래스명(생성자에서 정의한 매개변수들...)

const notebook1 = new Notebook('MacBook', 2000000, 'Apple')

 

클래스를 활용해 객체를 만들 때는 new 라는 키워드를 먼저 써주고

클래스명을 마치 함수처럼 호출하면서 매개변수값을 전달해주면 됩니다.

 

그러면 해당 클래스의 생성자가 호출되면서 객체가 생성되고 객체의 속성들에 매개변수값들이 할당되겠죠.

만들어진 객체는 변수에 할당해줍니다. 기본 타입의 데이터들을 변수에 할당하면 변수를 사용하여

해당 데이터에 접근할 수 있었습니다. 객체도 마찬가지입니다.

객체도 변수에 할당하고 나면 해당 변수를 활용해 객체에 접근할 수 있습니다.

객체의 속성 하나하나에 접근해 데이터를 갖고와야 할 때도 있겠죠? 이 때는 this.속성명 을 사용합니다.

 

[new 라는 의미는 영역(block)을 지정하여 함수 내부의 정의된 내용을 실행하여 주는 의미]

조금 더 쉽게 접근하면,

"new 연산자를 사용해야만 함수 내부의 내용을 변수에 대입 할 수 있다."

 

new연산자 이해를 돕는 구문

 

 

참조이미지

https://ko.javascript.info/constructor-new

 

new 연산자와 생성자 함수

 

ko.javascript.info

 


객체 리터럴(Object Literal)

자바스크립트에서는 객체 리터럴을 활용해서 바로 객체를 만들 수도 있습니다.

객체 리터럴은 클래스와 같은 템플릿 없이 빠르게 객체를 만들 수 있는 방법

const computer = {
	name: 'Apple Macbook',
	price: 20000,
	printInfo: function () {
		console.log(`상품명: ${this.name}, 가격: ${this.price}원`)
	}
}

computer.printInfo()

 

 

 

 

 

 

 

 

728x90
반응형
728x90
반응형

오늘 배운 것

- 파이썬 기초문법

(https://pyoja.tistory.com/62)

- 자바스크립트 문법 진행중

 

오늘 느낀 점

- 사실 강의 듣기전에 유튜브로 몇시간동안 기초문법을 시청만 했다(코딩X)

- 이론은 알고 있었지만 중간중간 퀴즈를 내줄때, 잠시 멈춰서 직접 코딩했는데

  생각보다 막히는 부분도 있었고, if num>20 하고 : 없이 엔터해서

  오류가 났는데 몇분 시간이 걸리기도 했다.

  눈으로 볼땐 당연한거고 너무 쉽네~ 했지만 직접해보면 버벅거리니

  앞으로도 계속 직접 코딩해봐야 겠다.

 

 

728x90
반응형

'일기 > TIL' 카테고리의 다른 글

TIL: Today I Learned 8일차  (0) 2022.11.23
TIL: Today I Learned 7일차  (0) 2022.11.22
TIL: Today I Learned 5일차  (0) 2022.11.18
TIL: Today I Learned 4일차  (0) 2022.11.17
TIL: Today I Learned 3일차  (0) 2022.11.16
728x90
반응형

https://www.notion.so/dfb89a042c6f4b29b64ea4da03a37ea6#cf5611d0d873436f9983ed3a96268231

[스파르타코딩클럽] 파이썬 문법 뽀개기

 

문자열

 

문자열 길이

text = 'jeonghoon'
result = len(text)
#값은 9

문자열 자르기

text = 'jeonghoon'
result = text[0:5]
#결과는 jeong

문자열 나누기

myemail = 'abc@sparta.co'
result = myemail.spit('@')[1].split('.')[0]
#답은 sparta

 

리스트와 딕셔너리

 

리스트는 순서가 중요하게 값을 담음

딕셔너리는 key와 value가 중요함

 

리스트 추가

a_list = [1,2,3,4,5]
a_list.append(99)

 

리스트 정렬

a_list = [1,5,3,7,9]
a_list.sort()

리스트 확인

a_list = [1,5,6,3,2]
result = ( 5 in a_list )
#들어있다면 true, 없다면 false

 

딕셔너리 형태

a_dict = {'name':'bob', 'age':27, 'friend' : ['영희','철수']}
a_dict['height'] = 180
result = ('height' in a_dict)

퀴즈 스미스의 과학 점수를 가져오기

people = [
    {'name': 'bob', 'age': 20, 'score':{'math':90,'science':70}},
    {'name': 'carry', 'age': 38, 'score':{'math':40,'science':72}},
    {'name': 'smith', 'age': 28, 'score':{'math':80,'science':90}},
    {'name': 'john', 'age': 34, 'score':{'math':75,'science':100}}
]
result = people[2]['score']['science']
print (result)

 

조건문, 반복문

money = 3000

if money > 3800:
	print('택시를 타자!')
elif money > 1200:
	print('버스를 타자!')
else:
	print('걸어가자!')

기초 반복문

fruits = ['사과', '배', '감']
for fruit in fruits:
    print(fruit)

 

people = [
    {'name': 'bob', 'age': 20},
    {'name': 'carry', 'age': 38},
    {'name': 'john', 'age': 7},
    {'name': 'smith', 'age': 17},
    {'name': 'ben', 'age': 27},
    {'name': 'bobby', 'age': 57},
    {'name': 'red', 'age': 32},
    {'name': 'queen', 'age': 25}
]

for person in people:
    name = person['name']
    age = person['age']
    print (name, age)

짝수 갯수세기

num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]

count = 0

for num in num_list:
    if (num % 2 == 0):
        count+= 1

print(count)

가장 큰 수 구하기

num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]

max = 0

for num in num_list:
    if max < num:
        max = num

print (max)

함수

주민번호를 입력받아 남여 판별하는 함수

def check_gender(pin):
    num = pin.split('-')[1][:1]
    if int(num) % 2 == 1 :
        print('남자')
    if int(num) % 2 == 0 :
        print('여자')

check_gender('991111-1234567')
check_gender('991111-2234567')

 

튜플(순서가 있고, 불변형)

a = (1,2,3)
print(a[0])

#아래와 같이 변형 불가능
a = (1,2,3)
a[0] = 99

집합( set( ) , 중복을 제거해줌 )

a = [1,1,2,3,3,3,4,4,5,5]
a_set = set(a)

#출력값 {1,2,3,4,5}
student_a = ['물리2','국어','수학1','음악','화학1','화학2','체육']
student_b = ['물리1','수학1','미술','화학2','체육']

a_set = set(student_a)
b_set = set(student_b)

print (a_set & b_set) #교집함
print (a_set | b_set) #합집합
print (a_set - b_set) #차집합

f-string (f'{name}')

scores = [
    {'name':'영수','score':70},
    {'name':'영희','score':65},
    {'name':'기찬','score':75},
    {'name':'희수','score':23},
    {'name':'서경','score':99},
    {'name':'미주','score':100},
    {'name':'병태','score':32}    
]

for s in scores:
    name = s['name']
    score = s['score']
    print (name+'의 점수는 '+str(score)+'점입니다')
    print(f'{name}의 점수는 {score}점입니다.')

try-except 예제

people = [
    {'name': 'bob', 'age': 20},
    {'name': 'carry', 'age': 38},
    {'name': 'john', 'age': 7},
    {'name': 'smith', 'age': 17},
    {'name': 'ben', 'age': 27},
    {'name': 'bobby'},
    {'name': 'bobby', 'age': 57},
    {'name': 'red', 'age': 32},
    {'name': 'queen', 'age': 25}
]

for person in people:
    try:
        if person['age'] > 20:
            print(person['name'])
    except:
        print(person['name'], '에러입니다')

 

파일 불러오기

from main_func import *

say_hi()
say_hi_to('영수')
def say_hi():
    print('안녕!')

def say_hi_to(name):
    print(f'{name}님 안녕하세요')

if문 삼항연산자

num = 3
result = ('짝수' if num % 2 == 0 else '홀수')
print(f'{num}은 {result}입니다.')

반복문

a_list = [1,2,2,5,1,2]
b_list = [a*2 for a in a_list]
print(b_list)

 

map, filter, lamda식

people = [
    {'name': 'bob', 'age': 20},
    {'name': 'carry', 'age': 38},
    {'name': 'john', 'age': 7},
    {'name': 'smith', 'age': 17},
    {'name': 'ben', 'age': 27},
    {'name': 'bobby', 'age': 57},
    {'name': 'red', 'age': 32},
    {'name': 'queen', 'age': 25}
]

def check_adult(person):
    return ('성인' if person['age'] > 20 else '청소년')

#맵
result = map(check_adult, people)

#람다
result = map(lambda person: ('성인' if person['age']>20 else '청소년'), people)

#필터
result = filter(lambda person: person['age']>20, people)

print(list(result))

클래스

class Monster():
    hp = 100
    alive = True

    def damge(self, attack):
        self.hp = self.hp - attack
        if self.hp < 0 :
            self.alive = False

    def status_check(self):
        if self.alive:
            print('살았다')
        else:
            print('죽었다')

m1 = Monster()
m1.damge(120)
m1.status_check()

m2 = Monster()
m2.damge(90)
m2.status_check()

 

728x90
반응형

'코딩공부 > 파이썬' 카테고리의 다른 글

파이썬 코딩 무료강의 (조코딩)  (0) 2022.11.16
[3] 팬사이트(팬명록) 만들기 퀴즈  (0) 2022.10.26
[2] 영화 감상평 사이트  (0) 2022.10.26
[1] 화성땅 공동구매 프로젝트  (0) 2022.10.26
monggoDB 기초  (0) 2022.10.23

+ Recent posts