[MacOS] M1 python3 설치하기
Tech/OS2021. 11. 5. 09:56[MacOS] M1 python3 설치하기

사전 설치 2021.11.04 - [MacOS] - [MacOS] Git 설치하기 위 글에서 brew는 꼭 설치 되어야 합니다! 만약, bash에 대해 궁금하시다면 아래 글을 참고하세요 2021.11.15 - [OS/Linux] - [Linux] source 명령어와 bash에 대해 알아보자 주의할 점 제 맥북의 경우 python2 버전이 사전 설치되어 있었고 python3를 설치하게 되더라도 python을 실행하면 기존에 설치되어 있던 python2를 실행하는 문제점이 있었습니다. 이번 포스팅에서는 python2 대신 설치한 python3로 변경하는 작업도 진행하겠습니다. brew로 pyenv 설치 brew install pyenv MacOS에선 pyenv를 이용해 python을 설치합니다. pytho..

[2021 KAKAO BLIND] 신규 아이디 추천 Python re
OnlineJudge2021. 4. 12. 22:56[2021 KAKAO BLIND] 신규 아이디 추천 Python re

문제로이동 코딩테스트 연습 - 신규 아이디 추천 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 programmers.co.kr 문제 설명 re 라이브러리를 사용했습니다. 좌/우측 특정 문자 제거 좌/우측 특정 문자 또는 공백 제거엔 strip(), lstrip(), rstrip()을 사용합니다. 이번 문제에서는 .을 제거하는 것이므로 strip('.')과 같이 사용할 수 있었습니다. 치환 및 제거 정규표현식에 해당하는 문자들을 치환, 제거하기위해 re.sub 함수를 사용했습니다. 위 두 기능을 제외하고는 하드코딩으로 가능하기에 생략하겠습니다. 이번 문제를 풀면서 re ..

Python3 나누기연산(/)과 시프트연산(>>)의 속도 차이를 알아보자
Tech/Python2021. 2. 15. 15:34Python3 나누기연산(/)과 시프트연산(>>)의 속도 차이를 알아보자

목차 결론 시프트연산이 더 빠릅니다. (미미하게) 시프트 연산은 int형이 32bits이므로 사용하는데 제한이 있습니다. 물론 언어별로 사용할 수 있는 방법이 상이한 것으로 알고 있습니다. 필요한 상황에 따라, 본인 스타일에 따라 적절히 사용하시면 되겠습니다. Python 디스어셈블러 내부적으로 어떻게 다른지 간단하게 살펴보겠습니다. 코드는 위의 소스코드를 사용했으며, 나누기 연산을 호출할 때와 시프트를 호출할 때 디스어셈블러로 살펴보았습니다. 차이점은 BINARY_TRUE_DIVIDE와 BINARY_RSHIFT를 호출 하는 것입니다. 내부적인 동작을 살펴보려 했으나 자세한 내용이 설명된 DOC이 없어서 생략하겠습니다. 결론적으로 파이썬3(3.6~3.8)에선 별도의 최적화 과정은 없었습니다. C++ 디스..

백준 2263 트리 풀이 pypy3, python3, java
OnlineJudge2021. 2. 4. 23:49백준 2263 트리 풀이 pypy3, python3, java

문제로이동 목차 문제 설명 재귀함수를 이용해 풀었습니다. 각 order의 특징을 살펴보면 inOrder : LVR (왼쪽-뿌리-오른쪽) postOrder : LRV (왼쪽-오른쪽-뿌리) preOrder : VLR (뿌리-왼쪽-오른쪽) 이러한 특징을 가졌는데, inOrder와 postOrder를 잘 보시면 구조가 다르기 때문에 이를 이용하여 풀어야 합니다. 1. postOrder는 뿌리의 위치가 항상 맨뒤에 존재합니다. 그래서 매 번 가장 마지막 노드를 가장 먼저 출력합니다. 2. 해당 뿌리 위치 왼쪽까지를 재귀합니다. 3. 해당 뿌리 위치 오른쪽부터 재귀합니다. 4. 1~3을 반복합니다. 문제 후기 pypy3와 python3의 차이점을 몸소 경험했던 문제였습니다. 신선한 충격이었고 덕분에 멘탈이 탈탈 털..

세그먼트 트리(Segment Tree) 알고리즘
Tech/알고리즘2020. 12. 21. 22:12세그먼트 트리(Segment Tree) 알고리즘

이게 뭐야? 트리 종류 중에 하나이며, 연속된 구간(특정 범위)의 합(최솟값, 최댓값, 곱 등)을 구하는데 많이 쓰인다. 아래에서 선형구현과 비교하며 왜 쓰는지, 어떻게 사용하는지 gif를 준비해 놨으니 자세히 알아보자. 세그먼트 트리 문제 보기 문제 - 1 페이지 www.acmicpc.net 일단 결과부터 보자 입력된 수는 10의 7제곱이다. 10개의 데이터 [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]를 두고 구간 합을 구해본다. 예시 입력 : 1 10 예시 출력 : 55 선형 구현 O(N) 초기화 과정 O(N) ARRAY = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] for i in range(1,len(ARRAY)): ARRAY[i] += ARRAY[i-1] 1 3 6..

Codeforces Round #691 (Div. 2) B. Move and Turn 풀이
OnlineJudge2020. 12. 20. 00:14Codeforces Round #691 (Div. 2) B. Move and Turn 풀이

문제 문제로 이동 Problem - B - Codeforces codeforces.com 목차 문제 설명 전형적인 규칙 찾는 문제이다. 개인적으로 A보다 쉬웠다. 2차원 좌표평면 가운데에서 로봇은 동, 서, 남, 북으로 1미터씩 움직일 수 있다. 단, 한쪽 방향만으로 갈 수는 없고 북쪽으로 한 칸 이동 했다면 그 다음엔 서, 동으로 이동 남쪽으로 한 칸 이동 했다면 그 다음엔 서, 동으로 이동 서쪽으로 한 칸 이동 했다면 그 다음엔 북, 남으로 이동 동쪽으로 한 칸 이동 했다면 그 다음엔 북, 남으로 이동해야 한다. 이 때 N 값 만큼 이동할 수 있는데, 로봇이 갈 수 있는 공간의 개수를 출력하라는 문제다. 자세한건 예시를 보자. 예시 그림으로 설명하자면 동, 서, 남, 북으로 이동하기 때문에 결과적으로..

백준 2042 구간 합 구하기/세그먼트트리
OnlineJudge2020. 12. 18. 22:54백준 2042 구간 합 구하기/세그먼트트리

문제로 이동 목차 문제 설명 구간합 문제다. 이 게시물에서는 세그먼트 트리를 이용해 해결한다. 충분히 단순 반복문으로 해결할 수 있지만 그런 경우, 구간 합을 구하는데 O(n)이 걸린다. 이런 과정이 M번 반복된다면 O(MN)이 된다. 구간합 뿐만 아니라 특정 위치의 수를 변경시키는 기능도 있다. 해당 위치의 수가 바뀌면 그보다 큰 위치의 합도 모두 변경해야 하므로 TLE가 날 수 밖에 없다. 세그먼트 트리를 이용하면 O(Mlog(N))으로 해결할 수 있다. 소스 코드 소스코드 import sys input = sys.stdin.readline tree = list() nodes = list() #ChangeIdx : 수정할 인덱스, ChangeNum : 수정할 숫자 def update(start, en..

백준 5676 음주코딩/세그먼트트리
OnlineJudge2020. 12. 15. 14:05백준 5676 음주코딩/세그먼트트리

문제로 이동 5676번: 음주 코딩 각 테스트 케이스마다 곱셈 명령의 결과를 한 줄에 모두 출력하면 된다. 출력하는 i번째 문자는 i번째 곱셈 명령의 결과이다. 양수인 경우에는 +, 음수인 경우에는 -, 영인 경우에는 0을 출력한다. www.acmicpc.net 목차 너무도 흔한 세그먼트 트리 문제이다. 하지만, 주의해야 할 부분이 몇 가지 있다. 주의해야 할 점 1. 구간곱 문제이므로 수가 커진다. 하지만, 이 문제에서는 음,양,0만 판별하면 되므로 모든 수를 -1, 0, 1로 바꿔준다. 2. 문제에 TC(테스트 케이스)가 주어지지 않았다. C++에선 while scanf 사용이 가능하지만 Python3에서는 다른 방법을 사용한다. TC가 주어지지 않는 경우 Python3에서는 Try - Except ..

image