프로그래밍 198

프로그래머스 H-index 다시!

https://school.programmers.co.kr/learn/courses/30/lessons/42747 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값이 이 과학자의 H-Index입니다. 어떤 과학자가 발표한 논문의 인용 횟수를 담..

프로그래머스 - 프로세스

https://school.programmers.co.kr/learn/courses/30/lessons/42587 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 쉽게 생각했다가 큰 코 다쳤다. 나는 처음에 아래와 같은 방식으로 문제를 풀려고 시도 했다. 1. priorities[location] 보다 우선순위가 큰수만 필터링: 우선순위가 큰 순으로 정렬: bigger 2. priorities[location] 과 같은수만 필터링: 인덱스 번호가 작은 순으로 정렬: eq 3. priorities[location] 보다 우선순위가 큰수만큼 ans 에 더함 4..

우아한형제들 회원시스템 이벤트기반 아키텍처

https://techblog.woowahan.com/7835/ 회원시스템 이벤트기반 아키텍처 구축하기 | 우아한형제들 기술블로그 {{item.name}} 최초의 배달의민족은 하나의 프로젝트로 만들어졌습니다. 배달의민족의 주문수는 J 커브를 그리는 빠른 속도로 성장했고, 주문수가 커지면서 자연스럽게 트래픽 또한 매우 커졌습니 techblog.woowahan.com 이렇게까지 높은 수준으로 관심사를 분리해서 느슨하게 결합하는구나.. 정말 배울점이 많은 좋은 글이다.

프로그래밍 2022.04.12

내가 생각하는 클린코드란?

내가 생각하는 클린코드란? 간결해야하고 잘 읽혀야한다. 즉, 각 객체가 자신이 맡은 일'만' 충실해야하고 이 일 저 일 뒤죽박죽 하면 안된다. 하나의 클래스는 하나의 업무를 하나의 메소드는 하나의 작업만을 해야한다. 변수명, 클래스명 작명에 힘을 써야한다. 비즈니스 예외를 잘 처리해야한다. 테스트하기 쉬워야한다. 클린한 코드는 하는일이 명확해야하고 한가지일에 집중해야하고 부수효과가 없을수록 좋다. 부수효과가 없을수록 좋다는건 맡은일에 관한 일만 처리하고 그 외에 다른부분에 영향이 없다는 것이다. 부수효과가 없으면 테스트하기도 덩달아 쉬워진다. 간결하게 잘 분리된 클래스, 메서드는 읽기가 쉽다. 복잡하지 않다. 복잡하지 않으면 실수가 발생할 확률이 줄어든다. 코드가 간결하면 논리적인 파악이 잘되고 코드를 ..

ALB HTTP2 삽질기

ELB 에서 ALB 로 변경하면서 HTTP2 를 적용하는 중 이유를 알기 어려운 문제가 발생하여 기록하낟. 문제가 발생한 설정 내용: ALB HTTP2 활성화 켬 대상그룹 프로토콜 버전 HTTP2 로 설정 NGINX listen http2 설정 증상: 대부분 잘되지만 일부 PC 에서 HTTP STATUS 464 오류가 발생함 일부 피씨에서만 발생하니 문제원인을 알기가 굉장히 까다로웠다. 해결을 위한 문제파악: 우선 ALB 엑세스 로그를 활성화한 후 로그를 확인해보았다. 액세스 로그를 확인해보니 대부분의 요청은 h2 HTTP/2.0 으로 호출이 되었으나, 464 오류가 발생한 요청은 https HTTP/1.1 로 요청을 하고 있었다. AWS Forum 을 뒤져보다가 아래와 같은 글을 발견하였고 아래와 같은..

프로그래밍/AWS 2022.03.10

프로그래머스 괄호 회전하기

https://programmers.co.kr/learn/courses/30/lessons/76502 코딩테스트 연습 - 괄호 회전하기 programmers.co.kr 이 문제는 보자마자 떠오르는대로 풀면 간단히 풀릴거라 예상했고 실제로 떠오른대로 푸니 간단했다. 하지만 이 문제는 얼마든지 더 간단한 규칙을 찾을 수 있을 것 같다는 생각이 든다.. 내가 푼 풀이는 그저 주어진 문자열의 길이만큼 문자를 한칸씩 이동하며 올바른 괄호 문자열인가 검사하고 맞다면 정답에 +1 을 해주는것이다. 다른사람의 풀이에 훨씬 간단한 규칙을 찾아서 푼 고수분들이 계실거라 기대하며 봤지만 내가 푼 풀이와 동일했다. from collections import deque def solution(s): answer = 0 if l..

이코테 떡볶이 떡 만들기 파이썬

문제설명 동빈이네 떡볶이 떡은 길이가 일정하지 않다. 대신에 한 봉지 안에 들어가는 떡의 총 길이는 절단기로 잘라서 맞춰준다. 절단기에 높이(H)를 지정하면 줄지어진 떡을 한 번에 절단한다. 높이가 H보다 긴 떡은 H위의 부분이 잘릴 것이고, 낮은 떡은 잘리지 않는다. 예를 들어, 높이가 19, 14, 10, 17 cm인 떡이 있고 절단기 높이를 15cm로 지정하면 자른 뒤 떡의 높이는 15, 14, 10, 15cm가 될 것이다. 그리고 잘린 떡의 길이는 차례대로 4, 0, 0, 2cm가 된다. 이 때 손님은 잘린 떡의 길이의 총 합인 6cm의 길이를 가져간다. 손님이 왔을 때 요청한 총 길이가 M일 때 적어도 M만큼의 떡을 얻기 위해 절단기에 설정할 수 있는 높이의 최댓값을 구하는 프로그램을 작성하시오..

이코테 게임개발

알고리즘 문제를 잘 풀려면 일단은 피지컬이 좋아야겠다고 생각이 들었다. 여기서 말하는 피지컬이란 내 생각을 코드로 구현할 수 있는 능력이다. 일단 기본이 되는 피지컬을 좀 키우고 여러가지 기법들에 대해 배워 나가야 겠다는 생각이 들어, 이코테의 구현문제를 하나 풀어봤다. 알고리즘 피지컬을 키우는건 기본체력을 키우는것과 비슷하지 않을까... 문제 현민이는 게임 캐릭터가 맵 안에서 움직이는 시스템을 개발 중이다. 캐릭터가 있는 장소는 1 X 1 크기의 정사각형으로 이뤄진 N X M 크기의 직사각형으로, 각각의 칸은 육지 또는 바다이다. 캐릭터는 동서남북 중 한 곳을 바라본다. 맵의 각 칸은 (A, B)로 나타낼 수 있고, A는 북쪽으로부터 떨어진 칸의 개수, B는 서쪽으로부터 떨어진 칸의 개수이다. 캐릭터는..