본문으로 바로가기

Daim's blog

네비게이션

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

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

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

Python으로 푸는 LeetCode 832. Flipping an Image (Easy)

주어진 2차원 배열의 원소를 각각 뒤집고, 1을 0으로 0을 1로 변환시키는 코드를 짜시오. LeetCode에서 푼 문제 리스트 보기 LeetCode에서 문제 보기 github에서 코드 보기 문제 풀이 Python의 reverse() 메소드를 사용하여 주어진 리스트 자체를 뒤집을 수 있다. (reversed()를 사용하면 새로운 리스트로 반환됨) 그 다음 리스트의 원소인 작은 리스트를 순회하면서 1을 0으로 0을 1로 바꿔주면 된다. 파이썬 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 class Solution: def flipAndInvertImage(self, A): """ Rumtime : faster than 74.47% of Python3 Memory Usage : le..

온라인 코딩 테스트 문제 풀이/LeetCode 문제 풀이 2019. 4. 18. 16:00

Python으로 푸는 백준 9012. 괄호

이 문제는 괄호 문자열이 쌍에 맞게 구성되어 있는지를 확인해서 'YES', 'NO'를 반환하도록 프로그램을 짜야한다. 백준에서 푼 문제 리스트 보기 백준에서 문제 보기 github에서 코드 보기 문제 풀이 Stack을 이용하여 괄호 문자열이 쌍이 맞는지 확인한다. 문자열은 앞에서부터 순서대로 문자 하나씩 Stack에 넣는다. Stack이 비어있는 경우에는 ')'는 들어갈 수 없다. ('NO' 반환) '('은 계속해서 쌓을 수 있다 (단, 모든 문자열을 확인했을때에는 Stack은 반드시 비어있어야 한다, 그렇지 않으면 'NO' 반환) ')'이 다음 차례로 들어갈 경우에는 ')'를 넣었다가 pop해줬다 치고 '(' 만 pop() 해준다. 위의 작업을 반복해 준다음, 모든 문자열을 확인하였을 때에 Stack이..

온라인 코딩 테스트 문제 풀이/백준 문제 풀이 2019. 4. 17. 16:00

Python으로 푸는 LeetCode 657. Robot Return to Origin (Easy)

로봇이 주어진 명령어 L(Left), R(Right), U(Up), D(Down) 대로 이동하여 모든 명령어를 수행하였을 때, 본래의 지점으로 돌아왔는지에 대한 여부를 반환하는 프로그램을 짜라. LeetCode에서 푼 문제 리스트 보기 LeetCode에서 문제 보기 github에서 코드 보기 문제 풀이 시작점 (r,c) == (0,0)에서 상하좌우로 이동하였을 때 결국 (0,0)으로 돌아오면 된다. 상하는 r의 값을 1씩 빼거나 더하면 되고, 좌우의 경우 c의 값을 1씩 빼거나 더해주면 된다. 주어진 문자열을 순회하면서 조건에 따라 r이나 c를 이동시켰을 때, (r,c)의 결과값이 (0,0)인지 확인하면 된다. 파이썬 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ..

온라인 코딩 테스트 문제 풀이/LeetCode 문제 풀이 2019. 4. 16. 15:00

프로젝트별로 독립된 실행 환경 구축하기 0 - 필요성, virtualenv, virtualenv의 동작 방식

프로젝트별 독립된 실행 환경은 왜 필요할까 패키지들 간의 의존성 문제라고 들어본 적이 있을까. 어떤 패키지가 아직 설치되지 않은 다른 패키지를 필요로 하거나, 특정 버전 이상 혹은 이하의 패키지 버전만을 필요로 한다면 그 패키지들 간에는 서로 의존성이 있음을 나타낸다. 규모있는 여러 프로젝트를 동시에 진행하고 있다면, 패키지들 간의 의존성 문제로 인해 프로젝트마다 서로 다른 파이썬 버전과 서로 다른 패키지 버전을 사용해야 하는 경우가 발생하게 된다. 예를 들어, opencv-python 패키지를 사용하려면 numpy를 반드시 필요로 한다. 패키지 관리자를 통해 패키지를 설치해보면 (보통 numpy를 함께 설치 할지 여부에 대한 질문에 생각없이 yes를 입력하게 되면서) 나도 모르는 사이 numpy가 함께..

Project/pre-work 2019. 4. 15. 16:00

Python으로 푸는 LeetCode 67. Add Binary (Easy)

이 문제는 문자열로 된 두 이진법의 수를 더한 다음 다시 이진법으로 바꾸어 반환하는 프로그램을 짜야한다. LeetCode에서 푼 문제 리스트 보기 LeetCode에서 문제 보기 github에서 코드 보기 문제 풀이 파이썬에서 이진법을 다루는 방법은 다음과 같다. 이를 활용해서 문제를 풀면 쉽게 문제를 풀 수 있다. 1 2 3 4 5 6 7 8 9 10 11 12 int("1010", 2) # 10 int("0110", 2) # 6 format(3, 'b') # '11' format(6, 'b') # '110" cs 파이썬 코드 1 2 3 4 5 6 7 8 9 class Solution: def addBinary(self, a: str, b: str) -> str: """ Runtime : faster t..

온라인 코딩 테스트 문제 풀이/LeetCode 문제 풀이 2019. 4. 14. 20:00

Python Flask 프레임워크 프로젝트에 ORM 적용하기 (Flask SQLAlchemy, ORM이란, ORM의 장점과 단점)

이 포스팅을 쓰는 이유 현재 Python의 Micro Framework인 Flask를 사용한 Studi 프로젝트를 진행하고 있다. Studi에서는 DBMS로 관계형 데이터베이스인 SQLite(에스큐엘라이트, 시퀄라이트)를 사용한다. 나는 Front만 맡아서 했었고 초기에는 간단한 기능만을 넣은 사이드 프로젝트였기 때문에 raw SQL Query를 사용하여 DB에 접근하고 있었다. 이 프로젝트를 좀더 키워서 백엔드의 영역도 광범위하게 건드려볼 생각에 리팩토링을 진행하면서 Python ORM인 Flask-SQLAlchemy(SQLAlchemy의 확장 라이브러리)를 적용하는 것이 좋겠다고 생각하게 되었다. Node.js로 프로젝트를 진행했을 때 ORM으로 Sequelize.js를 사용해보았는데 그때는 이미 프..

Project/gist 2019. 4. 13. 09:00

Python으로 푸는 백준 3184. 양

문제의 조건에 따라 하루가 지났을 때, 영역 안에 살아 남아있는 양과 늑대의 수를 출력하는 코드를 짜시오. 백준에서 푼 문제 리스트 보기 백준에서 문제 보기 github에서 코드 보기 문제 조건 - 영역 안의 양의 수가 늑대의 수보다 적으면, 늑대가 그 지역 안의 모든 양을 잡아 먹는다. - 영역 안의 양의 수가 늑대의 수보다 많으면 양이 이긴다. 이럴 경우 늑대가 죽는다. (주의) 문제 풀이 문제의 조건에서 주의할 점은 양이 늑대와 싸워서 이길 경우에는, 늑대가 죽는다는 점이다. 문제 조건에서 단순히 '이긴다' 라고만 표시가 되어 있어서, 늑대와 양이 대치 상태로 끝날 줄 알고 늑대의 수를 차감시켜주지 않았더니 결과값이 틀리게 나왔다. 이 부분만 코드에 추가하면 문제는 쉽게 풀린다. 알고리즘은 다음과 ..

온라인 코딩 테스트 문제 풀이/백준 문제 풀이 2019. 4. 12. 18:30

Python으로 푸는 LeetCode. 58. Length of Last Word (Easy)

공백으로 구분되는 문자열이 있을 때, 가장 마지막 단어의 길이를 반환하는 코드를 짜시오. LeetCode에서 푼 문제 리스트 보기 LeetCode에서 문제 보기 github에서 코드 보기 문제를 틀렸다면 보아야 할 사항 문자열을 (정확히 말하자면 오른쪽 공백 제거인 rstrip()이겠지만) strip()을 사용하여 문자열의 끝 쪽 공백을 지워주는 작업을 해주는게 좋다. 코드를 어떻게 짜느냐에 따라서 다르지만 input이 'a ' 와 같다면, 공백을 문자열로 취급해서 오답을 토해낼 수도 있다. 문제 풀이 이 문제는 파이썬의 다양한 기본 내장 메소드들을 사용하여 문제를 해결할 수 있다. 방법은 아래에 써 두었다. LeetCode에서 돌려보았을 때는 Rumtime에서 차이가 없지만, 시간 복잡도를 생각해보면 ..

온라인 코딩 테스트 문제 풀이/LeetCode 문제 풀이 2019. 4. 11. 16:00

Python으로 푸는 LeetCode 55. Jump Game (Medium)

nums 배열에는 현재 index부터 이동가능한 최대 길이값이 들어 있다. Index 0부터 맨 마지막 Index까지 도달이 가능한지 알아보는 프로그램을 짜시오. Leetcode에서 푼 문제 리스트 보기 LeetCode에서 문제 보기 github에서 코드 보기 문제 풀이 visited를 활용하기 - Time Limit exceeded 현재 위치에서 nums 배열에 적인 숫자 이하 만큼 이동 가능한 지점들을 이전에 접근했던 곳인지 확인한다. 아직 방문하지 않은 새로운 지점일 경우에는 방문 표시를 해주고 schedule에 넣어서 그 위치에서 nums에 적인 수만큼 최대 이동 가능한 모든 지점이 아직 유효한 지점인지 반복문을 활용해서 푸는 방법이다. 하지만 이 방법을 이용할 경우에는 시간 초과 문제가 발생한다..

온라인 코딩 테스트 문제 풀이/LeetCode 문제 풀이 2019. 4. 10. 17:00

Python으로 푸는 LeetCode 63. Unique Paths II (Medium)

이 문제는 LeetCode 62. Unique Paths 문제의 다음 단계의 문제이다. (0,0)부터 맨 아래의 오른쪽 끝부분까지 도달하는 경우의 수를 구해야 하며 중간에 장애물이 있는 경우를 고려해서 코드를 짜야 한다. LeetCode 62. Unique Paths 문제풀이 보기 LeetCode에서 푼 문제 리스트 보기 LeetCode에서 문제 보기 github에서 코드 보기 문제 풀이 LeetCode 62. Unique Paths (문제 풀이 보기) 의 코드에서 장애물이 있는 경우에 대한 예외처리를 해주면 된다. 장애물이 있는 경우에는 해당 지점까지 올 수 있는 경우의 수를 0으로 초기화해주어서 해당 위치에 값을 입력해주면 된다. 파이썬 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14..

온라인 코딩 테스트 문제 풀이/LeetCode 문제 풀이 2019. 4. 9. 09:00

Python으로 푸는 LeetCode 62. Unique Paths (Medium)

(0,0)에서 (n,m)까지 도달하는 모든 경우의 수를 구하는 프로그램을 짜시오. LeetCode에서 푼 문제 리스트 보기 LeetCode에서 문제 보기 github에서 코드 보기 문제 풀이 BFS로 문제를 풀 경우에는 Time Limit Exceeded(시간 초과) 에러가 난다. BFS로 풀기 BFS로 푸는 방법도 설명해보자면, (0,0)부터 시작하여 오른쪽, 아래 부분으로 이동가능한 경우에 pos_list라는 array(파이썬에서는 List)에 다음으로 체크할 위치 정보를 넣어준다. 다음으로 체크할 지점에 +1을 해준다. while문을 돌때마다 pos_list에 들어있는 지점들을 하나씩 pop() 해서 꺼내준다. 또다시 오른쪽, 아래부분의 지점이 범위를 초과하지 않은 유효한 범위인지 확인하며 위와 같..

온라인 코딩 테스트 문제 풀이/LeetCode 문제 풀이 2019. 4. 8. 17:30

Python으로 푸는 LeetCode 66. Plus One (Easy)

single digit(0~9)으로만 구성되어 있는 리스트를 마치 숫자처럼 생각하여 1을 증감시킬때, 리스트가 어떻게 변할지 프로그램을 짜시오. LeetCode에서 푼 문제 리스트 보기 LeetCode에서 문제 보기 github에서 코드 보기 문제 풀이 single digit으로 구성된 리스트를 문자로 바꿔준 다음에 join() 메소드를 활용해서 문자열로 합쳐준다. 그리고 합쳐준 문자열을 숫자로 변환한 다음에 1을 더해준다. 더해준 숫자를 다시 문자열로 변환한 다음에 리스트로 만들어 반환해준다. 파이썬 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 class Solution: def plusOne(self, digits): """ Runtime : faster than 61.90%..

온라인 코딩 테스트 문제 풀이/LeetCode 문제 풀이 2019. 4. 7. 10:30
  • 이전
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • ···
  • 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

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

CALENDAR

«   2025/10   »
일 월 화 수 목 금 토
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 오늘 / 전체
  • 글쓰기
  • 환경설정
  • 로그인
  • 로그아웃
  • 취소

검색

티스토리툴바