일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 주니어개발자멘토링
- 파이썬
- 항해
- 코딩부트캠프후기
- 백준
- 개발자스터디
- 10430번
- 항해플러스
- 코딩테스트
- EnvCommandError
- 파이썬 int()
- 파이썬 sep
- not a git repository
- 파이썬 클래스
- 날 문자열
- MomentumParameters
- 파이썬 map 함수
- 파이썬 |
- 주니어개발자역량강화
- 개발자사이드프로젝트
- 99클럽
- cp949
- print sep
- Fatal Python error: init_fs_encoding: failed to get the Python codec of the filesystem encoding
- 10172번
- vscode cp949
- 99일지
- fatal:not a git repository
- print("""
- Til
- Today
- Total
목록분류 전체보기 (64)
선발대
프로그래머스: 소수 찾기 (링크) 소수 자체를 판별하는 방법은 예전에 풀어봐서 알고 있었는데 가능한 조합을 찾는 방법이 바로 떠오르지 않았다. permutations 사용은 감이 왔는데 매번 달라지는 가짓수를 어떻게 선택하나 싶었다가 다른 분의 블로그에서 힌트를 얻을 수 있었다. 그냥 for문 돌리면서 가짓수를 변경한 조합을 리스트에 저장하고 나중에 join으로 합쳐준 뒤 int로 변경하면 되는 방식이었다. 이렇게 되면 "17"이 주어졌을 때 int_num에는 [1, 7, 17, 71] 이 남게 된다. 그리고 하나 더 중요한 점이 combination이 아니라 permutation을 사용했기 때문에 만약 [1, 1, 2]인 경우 11이 2번 나오게 된다. 이런 경우 때문에 정답을 출력 시 set으로 중복..
28324번: 스케이트 연습 (링크) 단순하게 생각해서 전체 리스트 중 최소값을 기준으로 '최솟값 + (최솟값+1)*(n-1)'로 구할 수 있다고 생각했다. 그런데 문제 조건에 따르자면 중간 지점에서 원하는대로 최댓값으로 올라갈 수 있는데 이 부분을 미처 고려하지 못했다. 전체 for문을 돌려서 최솟값과 비교하며 하나씩 해볼까 하다가 다르게 푸신 분이 계셔서 참고했다. 문제의 조건에 따르자면 마지막 지점에서는 속도가 0이어야 하고, 속도는 내려갈 때 1씩만 감소할 수 있으므로 마지막 중간지점은 무조건 속도가 1이어야 한다. 이렇게 limit_velocity를 미리 1 값을 주고 for문도 n-1번만 돌린다. 마찬가지로 감속은 1씩만 가능하므로 현재 중간지점의 속도는 그 뒤의 속도 개수에 따라 최댓값이 정..
프로그래머스: 숫자 변환하기 (링크) 처음에는 재귀로 풀 수 있을 것이라 생각하고 돌렸는데 계속 오류가 나서 결국 다른 사람의 풀이를 찾아봤다.dp에 매번 값을 넣어두고 set을 이용해서 동일한 값을 제거하는 방식으로 풀었다.x값이 초기 dp에 있으므로 x값과 동일한 y값이 나타나면 그 때의 answer를 리턴하게 된다.막상 풀이를 보면 간단한데 아직 적재적소에 맞는 방법이 바로 떠오르지 않는 것 같다. def solution(x, y, n): answer = 0 dp = set() dp.add(x) while dp: if y in dp: return answer else: dp_y = set() ..
15686번: 치킨 배달 (링크) 백트래킹 문제지만 다른 블로그 풀이를 참고해서 파이썬 combination으로 풀었다.파이썬 조합 라이브러리 사용법을 좀 더 알아둬야겠다. (1) 데이터 입력받기(2) 전체 그래프를 돌면서 1(집), 2(치킨집)의 좌표를 찾음(3) combination을 이용해서 집 ~ 치킨집 사이의 최소 거리를 찾음 from itertools import combinationsimport sys# 1. 데이터 입력 받기n, m = map(int, sys.stdin.readline().split())graph = []chicken = []city = []for _ in range(n): graph.append(list(map(int, sys.stdin.readline().split(..
2010번: 플러그 (링크) 생각해보면 간단하다. 전체 멀티탭의 플러그 개수를 입력 받고 거기에 각각의 멀티탭을 연결하는 개수를 빼주면 된다. import sysinput = sys.stdin.readlinen = int(input())multitaps = [int(input()) for _ in range(n)]print(sum(multitaps)-(n-1))
1309번: 동물원 (링크) 점화식 규칙을 찾지 못해서 다른 풀이를 참고했다. DP로 작게 쪼개서 생각하면 됨!n = 1, 2 인 경우에만 초기에 설정해주고 그 다음부터는 그 직전에 추가하면 된다. n = 10마리: 11마리: 2총합: 3 n = 20마리: 11마리: 42마리: 2총합: 7 n = 30마리: 11마리: 62마리: 83마리: 2총합: 17 n = 40마리: 11마리 82마리: 183마리: 124마리: 2총합: 41 import sysinput = sys.stdin.readlinen = int(input())dp = [0] * 100001dp[1], dp[2] = 3, 7for i in range(3, n+1): dp[i] = (dp[i-1] * 2 + dp[i-2]) % 9901pri..
15700번: 타일 채우기 4 (링크)엄청 간단한 문제였다. 큰 문제점은 없었고 쉽게 해결할 수 있었다.생각해보면 주어진 입력값으로 만들어지는 배열은 항상 직사각형 또는 정사각형이다.따라서 2 x 1, 1 x 2 타일로 채우려면 그냥 그 입력값으로 받은 직사각형 배열 개수를 2로 나누어 주면 된다. 내일도 차근차근 풀어봐야겠다. import sysinput = sys.stdin.readlinen, m = map(int, input().split())print(n * m // 2)
드디어 6월부터 8월까지 좌충우돌 직장인 팀 프로젝트가 끝났다. 와 이제 잘 수 있다 사실 그동안 회고를 거의 안 쓰고 있었는데 이번에 최종 회고를 적어보려 한다. 확인해보니 블로그에 적은 회고가 작년 5월이었다. 노트에 일정이랑 그 날 배운 내용을 따로 정리하다보니 시간이 흘렀다. 어쨌든 어느새 취업을 해서 이제 딱 1년차가 된 파이썬 백엔드 개발자가 되었다. 처음에 어떻게 공고를 보게 되었는지 기억은 안 나는데 마침 항해 플러스 공고를 보게 되었고, 찾아보니까 커리큘럼이 아래와 같았다. 현재 스타트업에 재직 중인데 미리 CI/CD, 모니터링 시스템 구축 등을 배워두면 나중에도 잘 사용할 수 있을 것 같았다. 항해 플러스는 팀으로 프로젝트를 진행한다. 사전 설문을 통해 스파르타 측에서 팀 배정을 해준다..
1강 (1) 강의소개 강의 목표 운영체제는 컴퓨터 하드웨어 바로 위에 설치되는 소프트웨어 계층으로서, 모든 컴퓨터 시스템의 필수적인 부분임. 본 강좌에서는 이와 같은 운영체제의 개념과 역할, 운영체제를 구성하는 각 요소, 그 알고리즘의 핵심적인 부분에 대해 기초부터 학습함. 강의 내용 운영체제 개요, 컴퓨터시스템의 구조, 프로세스 관리 CPU 스케줄링, 병행 제어, 데드락, 메모리 관리, 가상 메모리 파일 시스템, 입출력 시스템, 디스크 관리 운영체제란 무엇인가? 운영체제(Operating System, OS)란? 컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층 하드웨어에 직접 접근하지 않고 운영체제와 인터페이스하면 된다. 협의의 운영체제(커널):..
수강일자 2022년 7월 27일 수요일 ~ 2022년 7월 29일 금요일 (3일) 수강후기 혼자서 이것저것 뚝딱 만들 때는 상관없는데 확실히 협업할 때 Git 중요성을 절실히 느낀다. 예전에 스파르타코딩클럽 Git 강의를 들었을 때는 소스트리 GUI 환경으로 해서 개념만 짚고 넘어갔었다. CLI 환경에서는 사실 push, pull, branch, merge 등만 사용했었다. (맨날 쓰던 것들) 이번에 원티드 프리온보딩에 참여하면서 Git flow가 꼬여있을 때 구글링이나 다른 팀원 분 도움으로 긴급처치는 했지만 제대로 된 개념을 익히지 않을 채로 적용하다 보니 따로 공부가 필요했다. 그래서 듣게 된 Git 강의였다. 총 강의 시간은 3시간 정도였는데, 정리하고 하다 보니 3일이나 걸렸다. 아마 주말에 들..
오늘 새벽 2시까지 팀장님과 함께 에러를 수정하며 결국 dj-rest-auth를 알맞게 커스텀하였다. 엄청난 대장정이었다. dj-rest-auth 깃허브에 들어가서 파일 하나씩 다 뜯어보고 하나씩 우리 모델에 맞게 수정해봤다. 결국 로그인 시리얼라이저만 커스텀하고 나머지 기능은 그대로 사용하는 방식으로 간단히 끝낼 수 있었다. 결과물이 탄생한 과정은 아래와 같다. 이전에 우리 팀 유저 모델에서 유저 pk를 id(uuid 형태)로, 유저 아이디를 user_id로 작명했었다. 그런데 dj-rest-auth에서 로그인을 하면 user라는 변수가 정의되는데 여기에서 계속 user_id와 uuid 형태의 id가 서로 데이터 타입이 맞지 않는다며(당연함) 에러가 발생했다. 한참 동안 팀장님과 이것저것 시도해보다가 ..
과제 진행기간 2022년 7월 4일(월) ~ 2022년 7월 8일(금) 과제 요구사항 고객은 이메일, 비밀번호 입력을 통해 회원가입을 할 수 있음 고객은 로그인 이후 가계부 관련 아래의 행동을 할 수 있음. CREATE: 가계부에 오늘 사용한 돈의 금액, 관련 메모를 남길 수 있음 UPDATE: 가계부에서 수정을 원하는 내역은 금액, 메모를 수정할 수 있음 DELETE: 가계부에서 원하는 내역은 삭제할 수 있음 DELETE_FLAG: 삭제한 내역은 언제든지 다시 복구할 수 있음 LIST: 가계부에서 이제까지 기록한 가계부 리스트를 볼 수 있음 DETAIL: 가계부의 상세한 세부 내역을 볼 수 있음 고객은 회원 가입 이후, 로그인, 로그아웃 할 수 있음 로그인하지 않은 고객은 가계부 내역에 대한 접근 제한..
1. 수업소개 생활코딩 / Docker 입문수업 생활코딩 / Opentutorials 운영체제, DB, 웹서버 등을 한 개발자가 다 설치하고 관리하려면 너무 힘들다. 누군가 대신 해줬으면 좋겠다. 각각 알맞은 운영체제 위에 설치된 웹서버 하나, 또 다른 운영체제 위에 설치된 DB 하나를 네트워크로 연결해서 사용하면 총 3개의 서버가 필요하게 됨. 낭비임. 하나의 컴퓨터에 가상으로 컴퓨터를 만들고, 그 위에 운영체제를 설치한 후에 웹서버 설치하면 어떨까? 운영체제 위에 또 운영체제가 나오니까 리소스도 부족하고 속도도 느려짐. 또 다시 새로운 기술 등장. 1대의 컴퓨터 내에서 각각의 앱을 실행함. 이 앱들은 격리된 환경에서 실행됨. 이런 기술을 컨테이너이라고 함. 리눅스 운영체제에는 이미 이 기술이 내장되어..
세션 VS. 토큰! JWT가 뭔가요? 링크: https://www.youtube.com/watch?v=1QiOXWEbqYQ 인증과 인가의 차이점 인증(Authentication): 유저나 디바이스의 신원을 확인하는 것. HTTP 메시지에 누군지 적어서 서버로 요청 보냄. 인가(Authorization): 유저나 디바이스에게 접근 권한을 허가하거나 거부하는 것 세션 & 쿠키 세션: 서버 쪽에 저장하는 정보 쿠키: 클라이언트의 자체적인 임시저장소 로그인이 성공하면 세션 표딱지를 반으로 갈라서 하나는 사용자 브라우저에 세션 ID(쿠키)로 저장하고, 다른 한 쪽은 서버의 자기 책상, 창고 등(DB, 메모리, 하드디스크 등)에 올려놓는다. Stateful: 모든 사용자의 상태를 기억함. 덕분에 기억하는 대상의 상..