알고리즘 13

2022년 9-10주차 'JS를 배우는 이유'

Weekly growth 9주 차와 10주 차 사이에 기업과제를 받았고 이 때문에 주간 회고를 놓쳤습니다. 주간 회고는 어떤 것보다도 우위에 있어야 하는데 이를 놓친 것을 반성합니다. 9주 차 9주 차의 목표는 다음과 같았습니다. 1. CS Quiz 서비스를 2차 스프린트 진행 처음에 호기롭게 시작한 CS Quiz 프로젝트는 다시 생각해보았을 때 지속 가능한 프로젝트가 아니라는 생각이 들었습니다. 때문에 이 프로젝트는 잠정중지하고 다른 지속가능한 프로젝트를 진행하기로 하였습니다. 2022.02.23 - [Log/Today] - 멈춰~✋🏼 2. Node.js로 조회수, 유닛 테스트, 성능 테스트를 구현해보자. Node.js를 배우고 멘토님이 주신 과제를 수행하려고 했습니다만 주 중반에 기업과제가 주어졌고 ..

2022년 7주차 '스터디도 애자일 하게'

Weekly growth 데일리 체크리스트에 '결과물'을 함께 작성하기 시작했다. 결과물을 함께 작성하니 내가 일주일 동안 무엇에 집중했는지 알 수 있었다. 뿐만 아니라 내가 공통적으로 놓치는 것들도 알 수 있었다. 내가 놓치는 것들은 주로 독서항목이었는데 스터디나 개발 공부를 하다 보니 아무래도 우선순위가 뒤로 밀렸다. 이처럼 자신이 한 일들을 기록하는 것은 나 자신을 알아가는 효과적인 방법인 것 같다. 이러한 기록들을 살펴보면 내 자신이 무엇을 중요하게 여기고 무엇을 가볍게 여기는지 알게 된다. '데일리 체크리스트'를 실제 서비스로 만들어보고 싶다. 체크리스트를 작성하다 보니 재미난 아이디어가 생각났다. 나는 위 이미지처럼 21년부터 내가 사용한 시간을 우선순위별로 분류하고 있었다. 이와 유사하게 데..

2022년 6주차 '하기 쉽게, 하고 싶게'

Weekly growth 이번 주 내가 중점으로 둔 것은 '하기 쉽게, 하고 싶게'였다. 이를 실현하기 위해 이번 주 새롭게 실천한 방법은 '하루를 체크리스트로 모두 채우기'였다. 보통 다음날 '하고 싶은 것들'을 시간 순서대로 체크박스로 만든다. 그리고 당일이 되면 위에서부터 하나씩 체크하며 처리한다. 하나의 체크박스는 실행하는데 부담이 되지 않도록 아주 잘게 쪼갠 '단일 액션'이다. 블러 처리 하긴 했지만 저 이미지에는 '카페 가기', '점심 먹기', '쉬기' 등 일상의 당연한 것들도 포함되어 있다. (벌써 하고 싶지 않은가?) 데일리 체크리스트를 한 주 동안 실천해보니 매우 긍정적인 효과가 있었다. 우선 아침에 체크박스로 해야 할 일을 배치하니 기분 좋게 그 일을 할 수 있게 되었다. 나 같은 경우..

2022년 5주차 '스터디 시작'

Weekly Study "공부할 건 많은데 무엇부터 공부해야 할지 막막한 시점." 수료 직후라 조금은 쉬고 싶기도 해서 해이해져 있었다. 기존에 듣고 있던 파이썬 동시성 프로그래밍 강의를 듣거나 알고리즘 문제를 풀거나 하면 주 초반을 보냈다. 수요일에는 위코드에서 하는 [수료 후 가이드] 세션을 들었는데 기존에 생각하던 방향성(새로운 프로젝트 도전)과 사뭇 다른 가이드를 받고 다시 계획을 세워보기로 했다. 우선 취업에 도움이 되는 것은 새로운 프로젝트보다는 기존 프로젝트에 대한 리펙토링. 즉 유지보수가 더 도움이 될 거라는 것과 특히 백엔드의 경우 SQL과 CS 이론에 대한 지식이 부족하니 이쪽으로 공부를 집중하는 게 좋겠다는 내용이었다. 가이드는 충분히 동의하는 내용이었고 이를 위해 세션이 끝나자마자 ..

#5_술생연분 드디어 만나다

실제 고객들은 무엇을 중요하게 볼까? 술고라는 서비스는 우리가 하고 싶어서 만들었지만, 그럼에도 가장 중요한 건 결국 고객의 니즈라고 생각한다. 디자인을 배우고 상업예술에서 잠시 일을 했었던 나는 예술과 비즈니스를 가르는 중요한 기준 중에 하나가 바로 이 ‘제작자와 구매자 간 니즈의 일치’라고 생각한다. 고객의 생각이나 니즈와는 무관하게 만들고 싶은 것을 만든다면 그것은 ‘예술’, 구매자가 원하는 것이 무엇인지 파악하고 이를 만족시켜주기위해 만드는 것은 ‘비즈니스’의 영역이라고 생각한다. 물론 이 둘은 함께 공존할 수 있고, 이 둘이 교집합을 이루는 순간을 '덕업 일치'라고 생각한다. 서론이 길었는데 본론으로 들어가자면, 우리는 우리끼리만 만족하기 보다는 고객의 니즈를 확인하고 고객의 만족도를 높여주고 ..

정수 제곱근 판별

문제 설명 임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요. 제한 사항 n은 1이상, 50000000000000 이하인 양의 정수입니다. 입출력 예#1 121은 양의 정수 11의 제곱이므로, (11+1)를 제곱한 144를 리턴합니다. 입출력 예#2 3은 양의 정수의 제곱이 아니므로, -1을 리턴합니다 해결 방법 1. n의 제곱근을 구한다. 2. 제곱근이 정수로 나누어 떨어진다면 1을 더하고 제곱을 구한다. 3. 제곱근이 정수로 나누어 떨어지지 않으면 -1을 반환한다. def solution(n): a = n ** (1 / 2) ret..

짝수와 홀수 3가지 풀이법(if, dict, list) 그리고 bitwise

문제 설명 정수 num이 짝수일 경우 "Even"을 반환하고 홀수인 경우 "Odd"를 반환하는 함수, solution을 완성해주세요. 제한 조건 num은 int 범위의 정수입니다. 0은 짝수입니다. 해결 방법 def solution(num): # 첫 번째 방법 : if-삼항연산자 return "Odd" if num % 2 == 1 else "Even" # 두 번째 방법 : dict-key return { 1 : 'Odd', 0 : 'Even'}[num % 2] # 세 번째 방법 : list-index return ["Even", "Odd"][num & 1] # or [num % 2] 이 문제는 보자마자 1분 만에 풀었다. (홀짝? 이건 너무 쉽잖아!) 처음 푼 방법은 if-삼항연산자였다. % 연산자를 이..

하샤드 수

문제 설명 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요. 제한 조건 x는 1 이상, 10000 이하인 정수입니다. 입출력 예 설명 입출력 예 #1 10의 모든 자릿수의 합은 1입니다. 10은 1로 나누어 떨어지므로 10은 하샤드 수입니다. 입출력 예 #2 12의 모든 자릿수의 합은 3입니다. 12는 3으로 나누어 떨어지므로 12는 하샤드 수입니다. 입출력 예 #3 11의 모든 자릿수의 합은 2입니다. 11은 2로 나누어 떨어지지 않으므로 11는 하샤드 수가 아닙니다. 입출력 예..

핸드폰 번호 가리기

문제 설명 전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요. 제한 조건 s는 길이 4 이상, 20이하인 문자열입니다. 해결 방법 ''' 1. 마지막 요소 4개를 제외한 문자열을 구한다 2. 마지막 요소 4개를 제외한 수만큼 '*'을 만든다 3. 구한 문자열을 '*'문자열로 바꾸어 반환한다 ''' def solution(phone_number): a = phone_number[:-4] b = '*' * len(phone_number[:-4]) return phone_number.replace(a, b) ''' 입력값 〉"027778888" 기댓값 〉"*****8888" ''' 이 ..

행렬의 덧셈

문제 설명 행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요. 제한 조건 행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다. 해결 방법 1. 최종 리턴할 리스트를 생성한다 2. 내장함수 zip과 for를 이용하여 각 리스트의 요소를 분리한다 3. 반복 시 초기화되는 임시 리스트를 생성한다 4. 다시 각 리스트의 요소를 분리한다 5. 분리된 요소끼리 더한 값을 임시 리스트에 추가한다 6. 최종 리스트에 임시 리스트를 요소로 추가한다 7. 최종 리스트를 반환한다 def solution(arr1, arr2): answer_list ..