분류 전체보기 43

[웅's 프로그래머스] 기능개발 - 파이썬(python) 풀이

이번 시간에는 "프로그래머스 고득점 kit" "스택/큐" 카테고리에 있는 기능개발 문제를 풀어보겠습니다. 먼저, 진행율과 속도 배열을 이용하여 모든 작업의 남은 일수를 구합니다. 남은 일수를 구하는 식은 100% 에서 현재 진행상황인 progress 값을 뺀 후, 속도인 speed 값으로 나눠준 후 올림을 해주는 것 입니다. 만약 아래의 예시의 경우 다음과 같은 결과가 나옵니다. progresses = [95, 90, 99, 99, 80, 99] speeds = [1, 1, 1, 1, 1, 1] costs = [math.ceil((100-p)/s) for p,s in zip(progresses, speeds)] # costs = [5, 10, 1, 1, 20, 1] costs 를 순회하며 가장 큰 수의 ..

알고리즘 2021.09.25

[웅's HTTP 완벽 가이드] 1장 - HTTP 기초

'HTTP 완벽 가이드' 책을 읽고 정리한 내용입니다. 1장에서는 HTTP 통신이 어떻게 이루어지는 지와 앞으로 다루게 될 웹어플리케이션의 간략한 소개가 있었다. 먼저, 이번 장의 키워드들을 나열했다. 글을 읽기 전, 자신이 아는 개념을 간단하게 설명해보면 좋을 것 같다. HTTP ( HyperText Transfer Protocol ) URI ( Uniform Resource Identifier ) URL ( Uniform Resource Locatior ) URN ( Uniform Resource Name ) HTTP 메소드 종류 HTTP 상태 코드 HTTP 메시지 TCP/IP HTTP 프락시 웹 캐시 게이트웨이 HTTP 터널 1.1 HTTP란? 전 세계의 웹브라우저, 서버, 웹 애플리케이션이 대화할..

CS 스터디 2021.09.25

개발 공부를 한다는 것에 대한 생각 (feat. 부스트캠프 2달 반 경과)

개발 공부를 제대로 시작하겠다고 다짐한 지 2달 반? 정도 지났다. 현재까지 학습해 온 방향과 앞으로의 방향에 대해서 고찰해보는 시간을 갖고자 한다. 현재까지는 부스트캠프를 참여하며 캠프에서 주어진 미션을 해결하는 것이 주된 목표였다. 미션은 구체적으로 어떤 기능을 갖는 웹사이트를 구현하는 것이다. 해당 기능 구현을 위해 필요한 배경 지식을 스스로 찾아보고 그 기능을 내 프로젝트에 적용시키는 과정의 반복이었다. 이 과정은 주로 구글, 유투브, 블로그 등을 검색하며 혹은 다른 동료 캠퍼 분들의 파일을 참고하며 코드를 가져오는 방식이었다. 때문에, 해당 코드가 어떤 역할에 필요한 지 정도는 알지만 어떻게 작동하는 지, 어떤 장단점을 가지는 지, 그리고 상황이 조금 다른 경우에는 어떤 옵션들이 있는지 (혹은 ..

성장스토리 2021.09.25

[웅's 프로그래머스] 등굣길 - 파이썬(python) 풀이

이 문제를 풀 때 모두 다음과 같은 풀이 법을 떠올렸을 것이라 생각한다. 어떤 위치에 올 수 있는 경우의 수는 위쪽 위치에 올 수 있는 경우의 수와 왼쪽 위치에 올 수 있는 경우의 수를 더한 것이다. 웅덩이가 있는 부분은 in 함수를 써서 해당 위치일 경우에는 0 값을 넣어주면 간단하게 해결되는 문제이다! 그리고 나는 이러한 방식을 첫줄과 첫열에도 적용하기 위해서 (계산의 편의를 위해) 한 줄과 한 열을 더 만들었다. 한 줄씩을 더 만들고 집이 있는 곳의 값을 1로 주면 왼쪽과 위에 있는 값을 더해서 현재의 값이 나오도록 짤 수 있다. def solution(m, n, puddles): dp = [[0]*(m+1) for _ in range(n+1)] dp[1][1] = 1 for i in range(1..

알고리즘 2021.09.22

[웅's 프로그래머스] 정수 삼각형 - 파이썬(python) 풀이

이해를 돕고자 그림을 그려봤다... 목적은 정수 삼각형과 같은 리스트를 만드는 것인데, 점점 아래로 내려갈 수록 위의 값과의 합을 저장하여 리스트르 만드는 것이었다. 예시로 그럼에 위 세 줄만 뽑아서 만들어봤다 문제는 가운데에 있는 값의 경우 왼쪽에서 내려온 값과 오른쪽에서 내려온 값 2가지의 경우가 생긴다는 것이다. 문제에서는 가장 큰 값을 구하는 것이 문제이므로 두 값을 비교한 후 더 큰 값을 저장하기로 한다. 이때 그림에서도 볼 수 있듯이 오른쪽 값은 항상 자기와 같은 idx 값을 가지고 왼쪽 값은 idx-1 값을 구하면 된다. def solution(triangle): height = len(triangle) list = [0]*height for i in range(height): if i==0..

알고리즘 2021.09.22

[웅's 프로그래머스] N으로 표현 - 파이썬(python) 풀이

우선 N으로 표현 코드를 설명하기 전, 저의 코드가 그다지 깔끔하고 예술적인 코드는 아니라는 점을 말씀드립니다.. 하지만 이 문제를 풀며 겪었던 생각들과 사고의 과정을 담아보고자 합니다 :) N으로 표현은 코딩테스트 공부를 결심하고 가장 처음으로 풀었던 문제다. (왜 이런 잘못된 선택을 했을까..) 처음에는 곱하기, 나누기, 더하기, 빼기를 다 섞어보며 어떻게든 모든 경우의 수에 부합하는 논리를 만들고자 했으나... 경우의 수가 너무 많다는 것을 깨달았다. 숫자를 자리수로 채울 수도 있는게 컸다. 이렇게 경우의 수가 많은 경우에는 모든 상황을 아우르는 궁극의 알고리즘을 찾아내려 하는 것이 아니라, 해당 문제에서만 가능한 알고리즘을 찾는 것이 바람직 하다는 것을 깨달았다! ( 예전에 수능 수리영역을 공부할..

알고리즘 2021.09.22

[웅's 프로그래머스] 체육복 - 파이썬(python) 풀이

체육복 문제는... 정말 해결이 안되는 테스트 케이스가 있었던 문제다 그 이유는 reserve 배열이 정렬이 안되서 들어오는 것이었던 것!! 나는 예시도 정렬이 되어 있고 하다보니 당연히 정렬이 되어 있을 줄 알았다. 이 문제를 통해 가장 강하게 깨달은 점은 list 에서 알 수 없는 (?) 오류가 생기면 1. deep copy, shallow copy, 참조 문제가 아닐까? 2. 정렬 문제가 아닐까? 를 생각해 봐야지 라는 점이다. 문제 자체는 크게 어렵지 않았던 것 같다. 학생들의 수와 맞게 list 를 만들고 모두 체육복을 가지고 있다는 뜻에서 1을 참조하도록 한다. 그리고 잃어 버린 학생 리스트가 나오므로 lost 배열에 따라서 해당하는 학생을 1 => 0 으로 만들어 준다. 그리고 제약 조건에 ..

알고리즘 2021.09.22

[웅's 프로그래머스] 조이스틱 - 파이썬(python) 풀이

우선 아래 풀이에 앞서, ord 함수를 소개하고자 한다. print(ord('A')) 위 결과 값으로는 65가 나오고 ord 함수는 character 의 ASCII code 값을 반환하는 함수이다. 나는 이 함수를 몰랐기에.... 아래 코드 처럼 panix 라는 dictionary 를 정의해서 풀었다 :( 이 문제를 풀 때는 오른쪽 왼쪽으로 움직이는 횟수와 위 아래로 움직이는 횟수를 분리해서 풀었다. - 위 아래로 움직이는 문제는 해당 알파벳을 숫자로 변환한 후 Z 에서 내려가는 것과 A 에서 올라가는 것 중에 어느 것이 더 가까운지 비교해서 더하는 것으로 계산했다. - 오른쪽 왼쪽으로 움직이는 횟수는 처음에 그냥 오른쪽으로 갔을 때와 왼쪽으로 갔을 때를 비교해서 더 적은 횟수를 기준으로 계산했지만 큰 ..

알고리즘 2021.09.22

[웅's 프로그래머스] 큰 수 만들기 - 파이썬(python) 풀이

주어진 number 에서 k 자리수를 제외하여 큰 수를 만드는 문제이다. 어떤 수가 만들어 지든지 간에 k 자리수를 제외하면 결국 남는 number 의 자리수는 동일하다. 그렇다면 가장 큰 수란? 앞자리가 1이라도 더 큰 수가 가장 큰 수이다! 이 문제를 풀며 배운 점은, 앞자리와 뒷자리를 계속 비교해야 하는 로직에는 Stack 자료구조를 사용해야 한다는 점이다. 즉 나는 stack 에 number 를 차곡차곡 쌓으면서 만약 스택의 가장 상단에 위치한 값보다 큰 값을 넣는 경우에는 최상단 값을 삭제하는 논리로 문제를 풀었다. 중요한 점은 최상단 값을 삭제하고 다시 넣으려고 할 때, 다시 최상단 값과 넣는 값을 비교하여 넣는 값이 클 경우에는 위 과정을 반복하도록 했다. 이러한 반복문이 끝나는 시점은 삭제..

알고리즘 2021.09.22

[웅's 프로그래머스] 단속카메라 - 파이썬(python) 풀이

이 문제는 처음에 문제를 이해하기 위해 종이에 다음과 같은 좌표(?) 그림을 그려보았다. 문제 자체가 자동차들의 데이터를 바탕으로 카메라 위치를 결정하는 문제이기 때문에 자동차 데이터 들을 먼저 정렬할 필요성을 느꼈다. 자동차의 데이터에 따라서 카메라의 개수를 결정하면 되는 문제라고 생각했다. 문제는 정렬의 기준이었다. 자동차들이 들어오는 시간을 기준으로 할 것인지 혹은 나가는 시간을 기준으로 할 것인지 였는데, 나가는 시간을 기준으로 정렬하고자 했다. 뭐로 하든 상관 없을 것 같은데, 나가는 순으로 정렬하면 다음과 같은 경우의 수를 줄일 수 있었다. 기준으로 선택한 자동차의 나가는 시간과 다음 자동차의 들어오는 시간을 비교해야 하는데 나가는 순으로 정렬되어 있다면 위 경우 처럼 다음 자동차의 나가는 시..

알고리즘 2021.09.22