'시작하기' 버튼은 onclick 함수조차 안 걸려 있는 껍질뿐인 버튼이다.

숙제의 이해를 돕기 위한 예시를 거의 클론코딩한 거나 마찬가지이다ㅠㅠ

드디어 주특기 공부 주간의 첫날이 밝았다.

 

내가 주특기로 선택한 것은 자바스크립트를 기반으로 하는 라이브러리인 'React'이다.

조금이라도 공부에 도움이 될까 싶어 어제 강의와 책을 통해 조금은 자바스크립트 공부를 해 뒀는데,

만약 그것마저 없었다면 오늘 1주차 숙제를 제출하는 데 어려움이 따랐을 것 같다.

 

내장함수 map, filter, concat, from, indexOf를 배웠고,

JSX에서는 '태그는 무조건 닫고', '무조건 엘리먼트 1개만 반환하며', '파이썬에서 익숙한 class는 className으로 바꿔 붙여야 하고', '자바스크립트 값이나 문법은 { } 안에 써서 가져올 수 있고', '인라인 스타일은 {{ }} 안에 가져온다'는 것을 배웠다.

써 놓고도 아직 무슨 소린지 모르겠다😅

 

아무튼 갈 길이 멀다.

갈 길은 멀고 시간은 없다..

오늘 한 일

  • 공식적으로는 오늘까지 알고리즘 주간에 해당되지만, 사실상 알고리즘 개인공부는 어제로 끝났다. 오늘은 내일부터 있을 주특기 주간에 대비하여 주특기 언어의 기본 문법 강의를 듣는 날이어서, <JavaScript 문법 뽀개기> 강의를 완강했다. 파이썬에만 익숙한 상태라 비슷하면서도 다른 자바스크립트는 조금 헷갈리기도 한다.
  • 알고리즘 문제를 목표했던 10개까지는 풀지 못했다. 코드업에는 파이썬으로 풀 수 있는 문제가 많지 않은 것 같아, BOJ와 프로그래머스에서 총 7개의 문제를 풀었다. 프로그래머스는 에디터를 따로 켜놓을 필요가 없는 편리한 구조를 제공해 이용하는 재미가 있었다.
  • <HTML+CSS+자바스크립트 웹 표준의 정석> 5장 '입력 양식 작성하기' ~ 7장 '텍스트를 표현하는 다양한 스타일'을 읽었다. 내일부터는 주특기를 익혀야 하니 지금처럼 많은 분량을 하루에 다 볼 수는 없을 것 같다. 빠르지 않은 진도에 연연하지 말고 적당히 나눠서 읽어 나가야겠다.

내일 할 일

  • 주특기 공부를 시작한다. (어떤 식으로 진행될지 아직 알 수 없어 구체적으로는 못 적겠다.)
  • 알고리즘 문제를 5개 푼다.
  • <HTML+CSS+자바스크립트 웹 표준의 정석> 8장 '레이아웃을 구성하는 CSS 박스 모델'을 읽는다. 혹시 다 보지 못하더라도 스트레스 받지 말자.

'항해99 > 02_알고리즘(Day5~18)' 카테고리의 다른 글

항해02_알고리즘(Day17)  (0) 2021.06.24
항해02_알고리즘(Day16)  (0) 2021.06.23
항해02_알고리즘(Day15)  (0) 2021.06.22

오늘 한 일

  • BOJ 1002번 터렛 문제를 드디어 풀었다. 어제 그렇게 열 번 가까이 연속으로 틀렸던 이유가 단지 if / elif / else문의 순서 때문이었다니 너무 허탈했다. 결과값은 순서와 상관없이 모든 경우에서 똑같이 나올 것 같은데, 내 착각인 걸까?
  • CodeUp에서 파이썬 기초 100제를 모두 풀었다. 지금껏 BOJ에서 풀었던 문제들에 비하면 난이도는 낮았고, 세어 보니 100제가 아닌 98제였지만 아무튼 푸느라 보람 있고 알고리즘 문제를 풀면서 행복감을 느낄 지경이었다. 앞으로 이 사이트를 애용해야겠다!!! ╰(*°▽°*)╯
   # 리스트의 원소 모두 출력하기
    >>>a_list = ['H', 'E', 'L', 'L', 'O']		# 원소는 문자열이어야 한다
    >>>print(' '.join(a_list)
    H E L L O
  • <점프 투 파이썬> 6장 '파이썬 프로그래밍, 어떻게 시작해야 할까?'를 봤다. 요 근래 알고리즘이 워낙 손에 익기도 하고 해서 까다로운 부분 없이 쉽게 쉽게 넘어갈 수 있었다.
  • <HTML+CSS+자바스크립트 웹 표준의 정석> 1장 '웹 개발 시작하기' ~ 4장 '웹 문서에 다양한 내용 입력하기'까지 봤다. 사전준비 과정에서 강의를 듣고 공부했던 부분이라 다시 한 번 복습한다는 느낌으로 가볍게 읽었다. 그 동안 사용해 온 파이참에서, 책에서 다루는 에디터인 vscode로 다시 돌아갔다. 금방 질리지 않게 마음에 드는 테마(Dracula official dark)로 설정해 두었다. 역시 웹페이지 디자인과 기능에 관여하는 건 재밌는 일이다. 다시금 프론트엔드에 대한 흥미를 확인하는 과정과도 같았다고나 할까. 과연 이 마음이 언제까지 유지될는지는...

내일 할 일

  • 자바스크립트 문법 강의를 완강한다.
  • 코드업에서 알고리즘 10문제를 푼다. (물론 기초 난이도로)
  • <HTML+CSS+자바스크립트 웹 표준의 정석> 5장 '입력 양식 작성하기' ~ 7장 '텍스트를 표현하는 다양한 스타일'을 본다.

오늘 한 일

  • 알고리즘 마라톤 40번까지의 문제 중 38번인 BOJ 1002 터렛 1문제만 남겨놓고 다시 풀었다. 이건... 한번 맞힌 적이 있는 문제인데도 답안을 제출할 때마다 계속해서 틀렸고, 결국 맞았던 답안을 켜놓고 비교해가며 수정해서 다시 제출했지만 또 틀렸다. 그래서 일단 오늘은 포기ㅠㅠ
  • <점프 투 파이썬> 5장 '파이썬 날개 달기'를 봤다. 지금껏 쓸 일도 없었고, 쓸 줄도 몰랐던 클래스와 패키지 같은 내게만 새로운 개념들이 나와서 유익했다. 내장 함수들도 사용 빈도가 높은 것들로 정리되어 있었다.
       # 생성자(Constructor): 객체 생성 시 자동으로 호출되는 메서드
        >>> def __init__(self, first, second):
           		self.first = first
            	self.second = second
        >>> a = FourCal(4,2)				# 객체 생성과 동시에 매개변수에 각각 4, 2 대입
        >>> print(a.first)
        4
        >>> print(a.second)
        2
        
        
        
        if __name__ == "__main__":			# 해당 파일을 직접 실행했을 때만 참이 됨
        	print(add(1, 4))
            print(sub(4, 2))
            
            
            
        try:
        	...
        except ZeroDivisionError as message:	# 오류 메시지 자체가 출력됨
        	print(message)
        except (FileNotFoundError, IndexError) as i:
        	print(i)​

내일 할 일

  • 알고리즘 마라톤 38번 BOJ 1002 터렛 문제 꼭 다시 풀고야 말겠다.
  • <점프 투 파이썬> 6장 '파이썬 프로그래밍, 어떻게 시작해야 할까?'를 본다. 

'항해99 > 02_알고리즘(Day5~18)' 카테고리의 다른 글

항해02_알고리즘(Day17)  (0) 2021.06.24
항해02_알고리즘(Day15)  (0) 2021.06.22
항해02_알고리즘(Day14): day-off  (0) 2021.06.21

오늘 한 일

  • 안타깝게도 오늘은 알고리즘 마라톤에서 새로 푼 문제는 없었다. 도저히 푸는 방법을 모르겠는 문제 네댓 개는 과감하게 패스하고, 이미 푼 문제들을 처음부터 다시 풀기 시작했다. 1번부터 17번까지 풀었다. 아래 코드블럭은 BOJ 1011번 'Fly me to the Alpha Centauri'의 해답이다. 이동하는 거리에 상관없이 모든 경우에 통용되는 공식만 찾으면 생각보다 쉽게 풀리는 문제였다. 이걸 가지고 며칠간 손도 못 댄 채로 있었다는 게 놀라울 정도였다. 며칠에 걸쳐 고민한 덕에 풀었다고 봐야 할까?
import sys

t = int(sys.stdin.readline().rstrip())
for _ in range(t):
    x, y = map(int, sys.stdin.readline().split())
    distance = y - x
    if distance == 1 or distance == 2:
        print(distance)
    else:
        i = 2
        while True:
            if i*i < distance <= i*i+i:
                print(i*2)
                break
            elif distance <= i*i:
                print(i*2-1)
                break
            else:
                i += 1
  • <점프 투 파이썬> 4장 '프로그램의 입력과 출력은 어떻게 해야 할까?'를 봤다. 함수는 내 약점이기도 하다. 어떤 특정한 기능을 하는 함수인 줄 알았던 lambda는 def와 같은 것이었다. 활용 방법이 정해져 있는 게 아니라 def처럼 함수를 자유롭게 만들어 쓸 수 있는 도구였던 것이었다.
	# 여러 개의 입력값을 처리하기
	def add_mul(choice, *args):
    	if choice == "add":			# 매개변수 choice에 'add'를 입력받았을 때
        	result = 0
            for i in args:
            	result += i			# *args에 입력받은 모든 값을 더한다.
        elif choice == "mul":			# 매개변수 choice에 'mul'을 입력받았을 때
        	result = 1
            for i in args:
            	result *= i			# *args에 입력받은 모든 값을 곱한다.
        return result
        
        
        
  	  # 키워드 파라미터
   	 def print_kwargs(**kwargs):
    		print(kwargs)
        
   	 print_kwargs(name='foo', age=3)	# {'age': 3, 'name': 'foo'}
    
    
    
   	 # lambda
   	 add = lambda a, b: a+b
   	 result = add(3, 4)
   	 print(result)				# 7

내일 할 일

  • 이미 풀었던 알고리즘 마라톤 문제 18번~40번을 다시 푼다.
  • <점프 투 파이썬> 5장 '파이썬 날개 달기'를 본다.

'항해99 > 02_알고리즘(Day5~18)' 카테고리의 다른 글

항해02_알고리즘(Day16)  (0) 2021.06.23
항해02_알고리즘(Day14): day-off  (0) 2021.06.21
항해02_알고리즘(Day13)  (0) 2021.06.20

오늘 한 일

  • 근 2주간 나중에 읽으려고 저장해뒀던 읽기 목록의 자료들을 한번 훑어봤다. 저장 당시에는 유용하겠다 싶어 읽기 목록에 넣어놨지만, 시간이 흐르면서 나도 모르게 이미 습득해버린 내용들도 있었다. 스택 사용법, 깃허브 사용법 등이 그랬다.
  • <점프 투 파이썬> 3장 '프로그램의 구조를 쌓는다! 제어문'을 읽었다. 오히려 이 부분에서는 새롭게 접한 건 거의 없었다. 비교적 열심히 읽은 리스트 내포도 사실은 알고리즘 문제를 풀면서 막힐 때 다른 사람들의 코드를 참고해 여러 번 따라서 활용해 봤었다(신기해하면서).

내일 할 일

  • 내일은 또 다시 한 주가 시작되는 날이다! 상큼하게 알고리즘과 함께하는 월요일...🤐 더 이상의 설명은 생략한다. 일단 스터디에서든 개인적으로든, 알고리즘 마라톤 문제를 4개 더 풀도록 해보겠다. 이제 난이도 높은 것들만 골라서 남겨놨기 때문에 4개가 가능할지는 잘 모르겠다.
  • <점프 투 파이썬> 4장 '프로그램의 입력과 출력은 어떻게 해야 할까?'를 본다.

'항해99 > 02_알고리즘(Day5~18)' 카테고리의 다른 글

항해02_알고리즘(Day15)  (0) 2021.06.22
항해02_알고리즘(Day13)  (0) 2021.06.20
항해02_알고리즘(Day12)  (0) 2021.06.19

오늘 한 일

  • 스터디에서 알고리즘 마라톤 문제 5개를 풀었다. 전체적으로 다시 복습해 볼 충분한 시간을 갖기 위해 마음 같아서는 얼른얼른 끝내버리고 싶지만, 머리가 따라주지 않는다.
	# 입력받은 여러 개의 수를 리스트에 넣기
        x_list = [int(x) for x in input().split()]
               
        
        # 자료형의 원소들을 n개씩 골라 리스트에 넣기
        import itertools
        a_list = list(map(''.join, itertools.permutations(iterable, n)))	# 중복 허용
        b_list = list(map(''.join, itertools.combinations(iterable, n)))	# 중복 비허용
  • <점프 투 파이썬> 2장 '파이썬 프로그래밍의 기초, 자료형'을 봤다. 분량은 꽤 되지만 대체로 아는 내용이라 부담 없이 책장을 넘길 수 있었다. 물론, '이걸 진작에 알았더라면 코드를 그렇게 복잡하게 짜는 불상사는 없었을 텐데' 하는 것들도 있었다. 다른 사람들에게는 기본 중의 기본이겠지만, 어쨌거나 나는 코알못이니까.
	# 문자열 포매팅: 2개 이상의 값 넣기
        >>> number = 10
        >>> day = "three"
        >>> "I ate %d apples. so I was sick for %s days." % (number, day)
        
        # 또는, format 함수를 사용한 포매팅
        >>> "I ate {0} apples. so I was sick for {1} days.".format(number, day)
        
        # 결과는 같다. (하지만 난 f-string을 애용하겠지)
        'I ate 10 apples. so I was sick for three days.'
        
        
        
        # 문자열 삽입(join)
        >>> ",".join('abcd')
        'a,b,c,d'
        >>> ",".join(['a', 'b', 'c', 'd'])
        'a,b,c,d'
        
        
        
        # 리스트 뒤집기(reverse): 역순 정렬 아님에 주의
        >>> a = ['a', 'c', 'b']
        >>> a.reverse()
        >>> a
        ['b', 'c', 'a']
        
        
        
        # 리스트에 포함된 요소 x의 개수 세기(count)
        >>> a = [1, 2, 3, 1]
        >>> a.count(1)
        2
        
        
                								
        >>> a = {'name': 'pey', 'phone': '0119993323',
        		'birth': '1118'}
        >>> a.keys()				# 딕셔너리 key로 리스트 만들기						
        dict_keys(['name', 'phone', 'birth])
        >>> a.values()				# 딕셔너리 value로 리스트 만들기
        dict_values(['pey', '0119993323', '1118'])                
        >>> a['name']				# 존재하지 않는 키에 대해서는 오류 발생
        'pey'
        >>> a.get('name')			# 존재하지 않는 키에 대해서는 None을 반환
        'pey'
        >>> a.get('adress', 'moo')		# 키 값이 없을 경우 미리 정한 디폴트 값 반환
        'moo'
        
        
        
        >>> s1 = set([1, 2, 3, 4, 5, 6])
        >>> s2 = set([4, 5, 6, 7, 8, 9])
        >>> s1 & s2					# 교집합 구하기
        {4, 5, 6}
        >>> s1.intersection(s2)
        {4, 5, 6}
        >>> s1 | s2					# 합집합 구하기
        {1, 2, 3, 4, 5, 6, 7, 8, 9}
        >>> s1.union(s2)
        {1, 2, 3, 4, 5, 6, 7, 8, 9}
        >>> s1 - s2					# 차집합 구하기
        {1, 2, 3}
        >>> s1.difference(s2)
        {1, 2, 3}
       

내일 할 일

  • 일요일이니까 알고리즘 스터디와 알고리즘 마라톤은 잠시 쉬어간다! :)
  • 지난 일주일 간 읽기 목록에 넣어 놓기만 하고 건드리지 못했던 자료들을 한 번씩 훑어본다.
  • <점프 투 파이썬> 3장 '프로그램의 구조를 쌓는다! 제어문'을 본다. 아직 많이 삐그덕대는 내 제어문 구현에 많은 도움이 되길.

'항해99 > 02_알고리즘(Day5~18)' 카테고리의 다른 글

항해02_알고리즘(Day14): day-off  (0) 2021.06.21
항해02_알고리즘(Day12)  (0) 2021.06.19
항해02_알고리즘(Day11)  (0) 2021.06.18

+ Recent posts