오늘 한 일

  • 공식적으로는 오늘까지 알고리즘 주간에 해당되지만, 사실상 알고리즘 개인공부는 어제로 끝났다. 오늘은 내일부터 있을 주특기 주간에 대비하여 주특기 언어의 기본 문법 강의를 듣는 날이어서, <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

오늘 한 일

  • 스터디에서 알고리즘 마라톤 문제 4개를 풀었다. 이제 스트레스 받지 않고, 모르는 건 적당히 찾아가며 공부하기로 했다. 복습이 필요하다면 다시 풀어보면 그만이다.

 

	round(n)				# n을 소수점 첫째 자리에서 반올림



	from collections import Counter

	Counter(iterable).most_common()		# 원소를 최빈값 순서로 튜플 형태로 나열



	max(iterable), min(iterable)		# 원소의 최댓값, 최솟값 구하기

 

  • 주특기 선택을 앞두고 튜터님과 5:1 면담을 가졌다. 면담 전에 사전 회고를 제출했었는데, 사실 내 최대 고민이었던 '주특기 선택' 자체는 사전 회고를 작성하기 직전에 해결된 것이나 마찬가지였어서 딱히 쓸 내용이 없었다. 어떻게 주특기 선택에 대한 결정을 굳혔는지를 나열했을 뿐이다. 다른 분들이 질문을 다양하게 해주셔서 나도 많이 얻어 들었다. 알고리즘은 해답을 보면서 풀어보기(대신 해답을 보기 전에 스스로 도전하고, 도전에 필요한 적절한 시간을 찾아 스스로 정하기), 오류는 해결하면 되므로 오류 내는 것을 두려워하지 말기, 코딩에 노베이스인 경우 베이스를 쌓아감과 동시에 베이스가 있는 다른 사람들의 코드를 리뷰하고 벤치마킹하기, 좋아하는 회사를 찾기가 어렵다면 팀블로그를 검색해 보고 내용이 마음에 드는 곳을 골라보기, 과한 검색에 매몰된다면 얕은 검색 시도해보기(링크 속에서 다른 링크 타고 들어가기 금지).
  • <점프 투 파이썬> 1장 전체, 2장 조금을 봤다. 기본서라 전체적으로 빨리빨리 읽어나갈 수 있었지만, 내가 몰랐던 내용들도 꽤 있었다. 구매를 서둘러서 다행이다.

내일 할 일

  • 알고리즘 마라톤 문제 4개 풀기
  • <점프 투 파이썬> 2장 마저 보기
  • 알고리즘 마라톤에서 고전하고 있는 문제 1개 풀기

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

항해02_알고리즘(Day13)  (0) 2021.06.20
항해02_알고리즘(Day11)  (0) 2021.06.18
항해02_알고리즘(Day10)  (0) 2021.06.17

오늘 한 일

  • 스터디에서 알고리즘 마라톤 문제를 3개 풀었다(이미 풀었던 문제 다시 푼 건 제외). 오늘은 이항계수가 속을 썩였다. 분명 고등학교 수학 시간에 배웠는데, 여전히 눈에 잘 안 들어온다. 나의 짧은 지식으로 이걸 모듈 없이 구현해 보려니 속이 너무너무 썩었는데, 파이썬 math 모듈의 factorial()을 사용하면 아주 간단하게 풀어 해치울 수 있었다.

 

  • 내일과 모레 중 하루에 진행할 주특기 관련 면담 일정을 잡았다. 한 타임에 자리가 5개인데, 우리 스터디원 3명은 신청 링크가 열리자마자 신속하게 같은 날 같은 시간 자리를 잡았다. 이왕 얘기 나누는 자리인 거, 아는 사람 있으면 좀 더 편하게 말이 나오겠지 싶다.
  • 오후 3시에 유능한 크루원 분의 알고리즘 발표를 들었다. 사실 그 문제는 나와 우리 스터디가 오랜 시간 고전하고 있던 거라 문제 해설 위주일 줄 알고 갔는데, 에러 처리 방법이 주 내용이었다. 비록 문제 해설을 듣고도 그 문제를 속 시원히 풀지는 못했지만, 그때 들었던 에러 처리 방법을 활용해 다른 문제를 풀 수 있어서 대만족이다.
  • 오후 8시에 진행된 Spring 주특기 Q&A에 참여했다. 그러고 나서 React를 주특기로 삼아야겠다는 결정을 내렸다. 아무래도 백엔드 관련 얘기에는 별로 흥미가 느껴지지 않았다. 본의 아니게 결국 우리 스터디원 3명 모두 프론트엔드로 가게 된 것 같다.
  • 스터디에서 푼 문제가 3개밖에 되지 않아, 나의 마음속 기준인 하루 4개를 충족하지 못했다. 그래서 자정에 스터디를 해산한 후, 혼자서 문제 3개를 더 풀어봤다. 스트레스 받고 싶지 않아 적절히 힌트 찾아가며 풀었는데, 오늘 하루 알고리즘 때문에 내내 우울했던 기분이 '맞았습니다!!' 문구를 볼 때마다 싹 풀렸다.

내일 할 일

  • 스터디에서 알고리즘 마라톤 문제를 4개 푼다. 개수는 같이 정하지 않았고, 이건 어디까지나 내 기준이다.
  • 내일 있을 주특기 면담에 시간 맞춰 참여한다.
  • 오늘은 알고리즘 우울증으로 펴 보지도 않았던 <점프 투 파이썬>, 1장 꼭 보기!

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

항해02_알고리즘(Day12)  (0) 2021.06.19
항해02_알고리즘(Day10)  (0) 2021.06.17
항해02_알고리즘(Day9)  (0) 2021.06.16

+ Recent posts