본문으로 바로가기

Daim's blog

네비게이션

  • 홈으로
  • 블로그소개
관리자
  • 블로그 이미지
    다임하게

    파이썬으로 다양한 알고리즘 문제를 풀고 정리하는 공간입니다 : )

    링크추가
  • 글쓰기
  • 환경설정
  • 로그인
  • 로그아웃

Python으로 푸는 백준 1563. 개근상

백준 1563. 개근상 한학기의 출석 일수 N이 주어졌을 때, 개근상을 받을 수 있는 경우의 수를 세는 프로그램을 작성하시오. 백준에서 푼 문제 리스트 백준에서 문제 보기 Github에서 코드 문제 조건 출결 사항이 기록되는 출결은 출석, 지각, 결석이다. 개근상을 받을 수 없는 사람은 지각을 두 번 이상 했거나, 결석을 세 번 연속으로 한 사람이다. 문제 풀이 문제의 조건을 이해해 보자. 지각 횟수는 누적되고, 결석은 연속되지 않으면 초기화된다. 주어진 한 학기 출결 일 수 N일까지, 1일부터 차근차근 경우의 수를 살펴나갈 것이다. 매일 현재의 지각 횟수, 연속 결석 수를 확인하여, 문제 조건에 제시된 '개근상을 받을 수 없는 조건'에 해당되지는 여부를 확인한다. 이처럼 N일까지 매일 조건을 체크하면서..

온라인 코딩 테스트 문제 풀이/백준 문제 풀이 2019. 5. 30. 14:00

Python으로 푸는 백준 1793. 타일링

백준 1793. 타일링 2 * N 직사각형을 2*1과 2*2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 백준에서 푼 문제 리스트 보기 백준에서 문제 보기 Github에서 코드 보기 문제 풀이 이 문제를 이해하는데는 어렵지 않다. 다만 어떻게 풀지 막막할 뿐이다. 다이나믹 프로그래밍으로 문제를 풀기 위해서 문제를 자세히 들여다보자. 이 문제는 매번 다음 타일을 무엇을 두느냐를 결정하는 작은 문제로 나눠질 수 있다. 하나의 타일을 놓을때마다 (1) 2*1짜리를 놓을지, (2) 2*2 짜리를 놓을지, 아니면 (3)2*2를 만들기 위해서 1*2짜리를 2개를 합쳐 모양을 만들지를 고민한다.(2*1을 돌려놓으면 1*2가 된다) 다음에 놓을 수 있는 (1)(2)(3)을 이미지로 보면 아래와 같다. Ca..

온라인 코딩 테스트 문제 풀이/백준 문제 풀이 2019. 5. 29. 21:00

Python으로 푸는 백준 1991. 트리 순회

1991 트리 순회 이 문제는 트리의 구조를 입력받아, 트리를 순회하는 전휘, 중위, 후위 순회 방식대로 값을 출력하는 문제이다. 트리의 기본 문제라고 할 수 있다. 백준에서 푼 문제 리스트 보기 백준에서 문제 보기 github에서 코드 보기 문제 풀이 트리의 순회하는 방법으로는 전위 순회, 중위 순회, 후위 순회가 있다. 백준 1991 문제는 이진 트리의 순회에 관한 매우 기본적인 문제이다. 그럼에도 이 문제를 풀면서 난 매우 고전을 했다. 아무래도 트리를 구현하고나서 순회를 진행해야 하는데 트리를 구현하는 방식을 너무 쉽게 생각한 듯 하다. 1. 트리를 list(배열)로 구현한 방식 - 메모리 초과로 실패 내가 처음으로 푼 방법은 트리를 list(배열)로 구현한 방식이다. 문제에서 제안한 노드의 수는..

온라인 코딩 테스트 문제 풀이/백준 문제 풀이 2019. 5. 28. 19:00

UDP (User Datagram Protocol)

UDP (User Datagram Protocol) Client와 Server가 서로 데이터를 주고 받을때 우리는 네트워크상의 수많은 약속(프로토콜)들을 지켜가면서 통신을 하고 있다. 우리가 주고 받는 데이터(패킷)들은 한번에 목적지로 가는 것이 아니라 우리가 잘 알고 있는 인터넷 5계층이나 OSI 7계층을 통과하여 전달된다. 이 포스팅에서는 전송 계층에서 사용하는 대표적인 프로토콜인 UDP에 대해서 알아보고자 한다. UDP(User Datagram Protocol) UDP(User Datagram Protocol)는 TCP와 함께 대표적인 전송 계층의 프로토콜이다. UDP의 특징은 TCP처럼 다양한 기능이 있는 것이 아니라 많은 기능을 과감히 생략한 단순함에 있다. UDP의 전송 방식은 너무 단순해서 ..

Network 2019. 5. 23. 21:30

Python으로 푸는 프로그래머스 캐시((2017년)KAKAO BLIND RECRUITMENT)

캐시 2017 카카오 블라인드 채용에 나왔던 문제이다. 제이지가 DB 캐시를 적용하여 데이터베이스에서 게시물을 가져오는 부분의 성능 개선을 하고 있을 때, 캐시 크기를 얼마로 해야 효율적인지 알아낼 수 있도록 코드를 짜야한다. DB 캐시를 적용할 때 캐시 크기에 따른 실행 시간 측정 프로그램을 작성하시오. 프로그래머스에서 문제보기 Github에서 코드 보기 문제 풀이 solution. 1. 큐로 사용할 리스트를 선언한다(dictionary에는 우선순위를 표현할 index가 없으므로 큐를 사용했다) 2. cities에 담긴 값을 하나씩 꺼내어, queue에 이미 그 값이 있는지 없는지를 확인한다. 3. 이때 대소문자 구분 없도록 '단어'.lower() 할수를 사용하여 모두 소문자로 바꿔준다. 4. inde..

온라인 코딩 테스트 문제 풀이/프로그래머스 문제 풀이 2019. 5. 18. 11:00

Python에서 로그를 남기는 방법

이 포스팅은 Python의 기본적인 logging 방법에 대해서 이해하기 위해 작성되었다. 이 포스팅의 최종 목표는 개발자가 로그를 어떻게 작성하는 것이 로그를 잘 활용할 수 있는지에 대한 방법을 알아보는 것이다. 몇개의 포스트로 나눠 작성될지 모르겠으나 연속된 포스팅이 불가능할 수도 있으므로, Logging과 관련된 링크는 아래에 추가하는 것으로 대신하도록 하겠다. Logging이란 무엇인가 개발자가 시스템을 24시간 들여다보고 있을 순 없을 뿐더러 시스템이 오류 없이 항상 완벽게 동작할거라 보장할 수는 없다. 즉, 언제 어느 때든 예상하지 못한 시스템의 오류가 발생할 수 있고 이를 위한 후속 조치가 이뤄질 수 있도록 해야한다는 의미이다. 개발자가 오류를 고치기 위해서는, 에러가 발생하였을 당시의 시스..

Python/python 파헤치기 2019. 5. 17. 21:00

Python의 decorator로 log 남기기

Python으로 프로젝트를 진행하면서, API 요청에 대한 Request, Response에 대한 info를 로그(log)로 남기고 싶다면 decorator를 사용한다면 편리하다. decorator란 함수를 감싸고 있는 함수라고 생각하면 된다. @를 사용하여 wrapping 하고 싶은 함수 위에 적어주면, python의 모든 객체는 1급 객체이므로 해당 함수가 데코레이터의 인자로 전달될 수 있다. 이때 클로저(내부 함수가 외부 함수의 인자를 기억하고 있는 것)라는 개념을 이해하고 있어야 하는데, 데코레이터의 인자로 전달된 함수는 외부에서 전달되었음에도 외부 함수의 인자값들을 모두 기억하고 있다. 아래의 logger_decorator_with_params 메소드는 decorator로 활용되었다. 해당 함수..

Project/gist 2019. 5. 17. 18:00

Python으로 푸는 LeetCode 506. Relative Ranks (Easy)

LeetCode 506. Relative Ranks 점수가 가장 높은 순서대로 3명에게는 메달을 수여하고, 그 외에는 순위를 구한 값이 담긴 리스트를 반환한다. LeetCode에서 푼 문제 리스트 보기 LeetCode에서 문제 보기 Github에서 코드 보기 문제 풀이 nums를 역순으로 정렬한 리스트 sorted_nums를 생성한다. sorted_nums에서부터 값을 하나씩 꺼내게 되면 해당 점수의 순위를 알 수 있다. index 2까지의 점수는 순위가 아닌 medal을 받아야 한다. 따라서 medal 리스트로부터 index를 활용해 어떤 메달을 받게 될지 구한다. 그 외에는 index + 1 한 값이 순위이므로 그 값을 nums에 추가시킨다. 파이썬 코드 1 2 3 4 5 6 7 8 9 10 11 1..

온라인 코딩 테스트 문제 풀이/LeetCode 문제 풀이 2019. 5. 16. 23:30

Python으로 푸는 LeetCode 744. Find Smallest Letter Greater Than Target (Easy)

주어진 문자보다 가장 처음으로 큰 숫자를 찾아 반환하는 코드를 짜시오 LeetCode에서 푼 문제 리스트 보기 LeetCode에서 문제 보기 github에서 코드 보기 문제 풀이 주어진 문자보다 가장 처음으로 큰 숫자를 반환하여야 한다. 단, 주어진 문자가 주어진 문자리스트의 모든 문자보다 클 경우에는 list의 가장 처음 문자를 반환하면 된다. "Letters also wrap around" 라는 문제 조건이 있기 때문이다. 파이썬 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 class Solution: def nextGreatestLetter(self, letters, target: str) -> str: target = ord(target) for letter i..

온라인 코딩 테스트 문제 풀이/LeetCode 문제 풀이 2019. 5. 15. 23:30

Python으로 구현하는 자료구조 : Queue (3) Priority Queue

이번 포슽팅에서는 자료구조 Queue의 한 종류인 Priority Queue(우선순위 큐)에 대한 특징을 살펴보고 파이썬으로 Priority Queue에 원소를 삽입, 삭제하는 코드를 짜보도록 하겠습니다. # Priority Queue란 Priority Queue(우선순위 큐)는 Dijkstra 알고리즘, Huffman 코딩, Prim 알고리즘 등 다양한 알고리즘에서 활용되는 자료구조입니다. Priority Queue의 각 원소들에게는 우선순위 값이 있으며, 이 값이 낮을 수록 급하게 처리해야 하는 데이터입니다. 보통 Queue는 들어오는 순서대로 원소들을 저장하지만, Priority Queue에서는 우선순위가 높은 원소가 먼저 나오도록 정렬되어 있습니다. # Priority Queue 구현하기 # 파이..

Data structure 2019. 5. 14. 09:30

객체 지향 프로그래밍 특징 (추상화, 캡슐화, 상속, 다형성)

객체 지향 프로그래밍 (OOP : Object-Oriented Programming) 객체 지향 프로그래밍은 컴퓨터 프로그래밍 패러다임 중에 하나이다. 패러다임이란 프로그래밍을 어떤 관점에서 해나갈 것인가에 대한 고민이다. 기존 절차 지향 프로그래밍 언어들이 프로그램의 프로세스 흐름을 표현(명령어의 목록이다라고 생각)하는데 중점을 두었다면, 객체 지향 프로그래밍 언어들은 데이터나 정보의 표현에 중점을 둔 언어들이다. 프로그램을 여러 개의 독립적인 단위, 즉 '객체'들의 모임으로 생각하는 것이다. 추가적으로 함수형 프로그래밍은 상태값을 지니지 않는 함수값들의 연속으로 생각할 수 있게 해준다. 자바는 대표적인 객체 지향 패러다임을 따르는 언어지만 jdk 1.8부터 함수형 프로그래밍 패러다임을 지원하기 위해 ..

Python/python 파헤치기 2019. 5. 13. 15:00

Python으로 구현하는 자료구조 : Queue (2) Circular Queue

이번 포스팅에서는 자료구조 큐(Queue) 중에 Circular Queue(환형큐)에 대해 살펴보고 파이썬으로 Circular Queue를 구현하여 삽입(enqueue), 삭제(dequeue)하는 코드를 짜보도록 하겠습니다. # Circular Queue란 Queue 자료구조의 특성상 한쪽 방향에선 데이터가 들어가고 한쪽 방향에서는 데이터가 나가면서 뒤에 저장된 데이터들을 한 칸씩 모두 이동해야 하는 한계가 있습니다. 물론 Linked List를 통해 큐를 구현한다면 이러한 한계점을 극복할 수는 있지만 리스트를 사용해 Queue를 구현하고자 한다면 Circular Queue를 만들어 한계를 극복할 수 있습니다. Circular Queue는 번거로운 데이터 이동을 발생시키지 않고 주어진 공간을 활용할 수 ..

Data structure 2019. 5. 13. 09:00
  • 이전
  • 1
  • 2
  • 3
  • 4
  • 5
  • ···
  • 12
  • 다음

사이드바

NOTICE

  • 내 맘대로 파이썬 커리큘럼
  • 삼성 SW Expert Academy 푼 문제 리스트
  • LeetCode에서 푼 문제 리스트
  • 백준에서 푼 문제 리스트
  • 정리한 알고리즘 리스트
  • 전체 보기
MORE+

CATEGORY

  • 분류 전체보기 (136)
    • Project (9)
      • pre-work (1)
      • gist (8)
    • Python (5)
      • PYCON 2019 (0)
      • python 파헤치기 (5)
      • cheat sheet (0)
      • module (0)
    • Data structure (9)
    • Algorithm (0)
    • 온라인 코딩 테스트 문제 풀이 (104)
      • 문제 풀이 전략 (1)
      • LeetCode 문제 풀이 (42)
      • 백준 문제 풀이 (33)
      • 삼성 SW Expert 문제 풀이 (26)
      • 프로그래머스 문제 풀이 (2)
      • HackerRank 문제 풀이 (0)
    • Database (6)
      • MySQL (6)
    • Network (1)
    • Tools (2)
      • Git (2)

RECENTLY

  • 최근 글
  • 최근 댓글

최근 글

최근댓글

Trackback

TAG

  • 백준
  • SW Expert Academy
  • 삼성 코딩 테스트
  • 파이썬 자료구조
  • python으로 푸는
  • leetcode python
  • SW Expert
  • python data structure
  • DP
  • leetcode 파이썬
  • 삼성 기출 문제
  • Dynamic Programming
  • Tree
  • leetcode
  • Django tutorial
MORE+

CALENDAR

«   2025/07   »
일 월 화 수 목 금 토
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31

VISITOR

오늘
어제
전체
  • 홈으로
  • 방명록
  • 로그인
  • 로그아웃
  • 맨위로
SKIN BY COPYCATZ COPYRIGHT Daim's blog, ALL RIGHT RESERVED.
Daim's blog
블로그 이미지 다임하게 님의 블로그
MENU
  • 홈으로
  • 블로그소개
CATEGORY
  • 분류 전체보기 (136)
    • Project (9)
      • pre-work (1)
      • gist (8)
    • Python (5)
      • PYCON 2019 (0)
      • python 파헤치기 (5)
      • cheat sheet (0)
      • module (0)
    • Data structure (9)
    • Algorithm (0)
    • 온라인 코딩 테스트 문제 풀이 (104)
      • 문제 풀이 전략 (1)
      • LeetCode 문제 풀이 (42)
      • 백준 문제 풀이 (33)
      • 삼성 SW Expert 문제 풀이 (26)
      • 프로그래머스 문제 풀이 (2)
      • HackerRank 문제 풀이 (0)
    • Database (6)
      • MySQL (6)
    • Network (1)
    • Tools (2)
      • Git (2)
VISITOR 오늘 / 전체
  • 글쓰기
  • 환경설정
  • 로그인
  • 로그아웃
  • 취소

검색

티스토리툴바