전체 글
[Python] 프로그래머스 Lv2 - 멀리 뛰기
🔗 문제링크 코딩테스트 연습 - 멀리 뛰기 효진이는 멀리 뛰기를 연습하고 있습니다. 효진이는 한번에 1칸, 또는 2칸을 뛸 수 있습니다. 칸이 총 4개 있을 때, 효진이는 (1칸, 1칸, 1칸, 1칸) (1칸, 2칸, 1칸) (1칸, 1칸, 2칸) (2칸, 1칸, 1칸) (2칸, 2 programmers.co.kr 📂 분류 DP 💡 풀이 이 문제는 피보나치수열과 유사하다. 따라서 피보나치수열의 문제를 풀듯이 해결하면 된다. 💻 코드 MOD = 1234567 def solution(n): a, b = 0, 1 for _ in range(n): a, b = b, (a + b) % MOD return b
[Python] 프로그래머스 Lv2 - 땅따먹기
🔗 문제링크 코딩테스트 연습 - 땅따먹기 땅따먹기 게임을 하려고 합니다. 땅따먹기 게임의 땅(land)은 총 N행 4열로 이루어져 있고, 모든 칸에는 점수가 쓰여 있습니다. 1행부터 땅을 밟으며 한 행씩 내려올 때, 각 행의 4칸 중 한 칸만 밟 programmers.co.kr 📂 분류 DP 💡 풀이 처음에는 단순하게 행의 최댓값과 열이 겹친다면 두 번째로 큰 수를 구하는 방식으로 접근했다. 하지만 이 접근방식은 잘못된 방식이었고 이 문제는 DP로 접근해야 해결할 수 있는 문제였다. 접근방식 현재 값에 같은 열은 밟을 수 없으므로 현재 열을 제외한 이전 행의 최댓값을 더해준다. 💻 코드 def solution(land): for i in range(1, len(land)): for j in range(l..
[Python] 프로그래머스 Lv2 - 다음 큰 숫자
🔗 문제링크 코딩테스트 연습 - 다음 큰 숫자 자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다. 조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다. 조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니 programmers.co.kr 📂 분류 구현 💡 풀이 Lv1에 있어도 되는 아주 쉬운 구현 문제이다. 접근 방식 주어진 n을 2진수로 바꾼뒤 1의 개수를 세아린다. n + 1부터 루프를 돌리고, n의 1의 개수와 같은 수를 찾으면 그 숫자를 반환한다. 💻 코드 def solution(n): count = bin(n).count('1') i = n + 1 while True: if count == bin(i).count('1'): return i i..
[Python] 프로그래머스 Lv2 - [3차] n진수 게임 (2018 KAKAO BLIND RECRUITMENT)
🔗 문제링크 코딩테스트 연습 - [3차] n진수 게임 N진수 게임 튜브가 활동하는 코딩 동아리에서는 전통적으로 해오는 게임이 있다. 이 게임은 여러 사람이 둥글게 앉아서 숫자를 하나씩 차례대로 말하는 게임인데, 규칙은 다음과 같다. 숫자를 0 programmers.co.kr 📂 분류 구현 💡 풀이 n진법을 구하는 공식만 알고 있다면 금방 해결할 수 있는 문제이다. 접근방식 2진수부터 16진수까지의 값을 구해야 하기 때문에 num이 n보다 작을 때까지 몫과 나머지를 구한다. 0 ~ t * m까지의 n 진수의 값을 스트링으로 저장한다. 튜브의 차례의 요소를 answer에 저장하고 t개가 채워진다면 반복문을 종료한다. 💻 코드 def convert(num, base): code = "0123456789ABCD..
[Python] 프로그래머스 Lv2 - 올바른 괄호
🔗 문제링크 코딩테스트 연습 - 올바른 괄호 괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어 "()()" 또는 "(())()" 는 올바른 괄호입니다. ")()(" 또는 "(()(" 는 올바르지 않은 programmers.co.kr 📂 분류 스택 💡 풀이 스택의 대표적인 문제이다. 접근 방식 '(' 일 경우 stack에 저장한다. ')' 일 경우 stack이 비어있는지 확인하고 비어있다면 False 리턴한다. 비어있지 않다면 pop 시킨다. 올바른 괄호일 경우 stack의 사이즈는 0이기 때문에 0이라면 True, 0이 아니라면 False를 반환한다. 💻 코드 def solution(s): stack = [] for i in rang..
[Python] 프로그래머스 Lv2 - [3차] 파일명 정렬 (2018 KAKAO BLIND RECRUITMENT)
🔗 문제링크 코딩테스트 연습 - [3차] 파일명 정렬 파일명 정렬 세 차례의 코딩 테스트와 두 차례의 면접이라는 기나긴 블라인드 공채를 무사히 통과해 카카오에 입사한 무지는 파일 저장소 서버 관리를 맡게 되었다. 저장소 서버에는 프로그램 programmers.co.kr 📂 분류 구현 정렬 💡 풀이 문자열 파싱 해서 해결하는 문제이다. 접근방식 파일을 한 문자씩 탐색하다가 숫자가 나온다면 현재 인덱스 전까지의 문자열을 head에 저장하고 나머지는 number에 저장을 한다. number 문자열을 탐색하다가 숫자가 아닌 다른 문자가 나온다면 현재 인덱스 전까지의 문자열을 저장하고 number에 저장하고 나머지는 tail에 저장한다. 문제 설명에 tail은 정렬 기준이 아니기 때문에 제외하고 head -> n..
[Python] 리스트에서 객체 및 튜플 정렬
Goal 파이썬의 객체 리스트, 튜플 리스트 정렬 sort() 자신 리스트를 정렬 a = [5, 341, 6, 1, 4] a.sort() sorted() 함수 argument로 들어온 리스트를 정렬해서 반환 a = [5, 341, 6, 1, 4] b = sorted(a) key 매개변수를 이용한 정렬 어떠한 요소를 기준으로 정렬 튜플(tuple) 정렬 tuple = [(1, b), (4, z), (3, a), (1, a)] tuple.sort(key=lambda x: (x[0], x[1])) # 정렬결과: [(1, 'a'), (1, 'b'), (3, 'a'), (4, 'z')] 코드 설명 x[0] 기준으로 먼저 정렬하고 같은 값이 존재할 경우 x[1]를 기준으로 정렬한다. 객체(object) 정렬 cla..
[AWS EC2] swap 메모리 설정
문제 EC2 프리티어를 생성하여 Docker와 Jenkins를 이용해 CICD를 설정하다가 메모리 과부하가 발생했다. 이를 해결하기 위해 검색을 하다가 swap 메모리라는 걸 알게 되었다. swap 메모리란 RAM이 부족할 경우 HDD의 일정 공간을 마치 RAM처럼 사용하는 것이다. swap 메모리를 활용하여 메모리 부족현상을 해결하기 위한 글을 작성하고자 한다. swap 메모리 설정 dd 명령을 사용하여 swap 메모리를 할당한다. $ sudo dd if=/dev/zero of=/swapfile bs=128M count=32 bs는 블록 크기, count는 블록 수이다. swap 파일의 크기는 bs * count이다. swapfile의 읽기 및 쓰기 권한을 수정한다. $ sudo chmod 600 /s..
[Python] 프로그래머스 Lv2 - 양궁대회 (2022 KAKAO BLIND RECRUITMENT)
🔗 문제링크 코딩테스트 연습 - 양궁대회 문제 설명 카카오배 양궁대회가 열렸습니다. 라이언은 저번 카카오배 양궁대회 우승자이고 이번 대회에도 결승전까지 올라왔습니다. 결승전 상대는 어피치입니다. 카카오배 양궁대회 운영위원 programmers.co.kr 📂 분류 백트래킹 완전탐색 💡 풀이 친구가 파이썬으로 알고리즘 문제 푸는 것을 보고 파이썬이 편해 보이길래 파이썬으로 풀어보았다. 이 문제는 n의 크기가 10 이하 이므로 백트래킹 + 완전탐색으로 해결할 수 있는 문제이다. 접근 방식 라이언이 점수를 획득할지의 여부를 체크하면서 재귀 함수를 진행한다. 라이언의 최대 점수를 경신하면서 answer에 과녁 점수를 넣어준다. 가장 낮은 점수를 더 많인 경우를 반환해야 하기 때문에 낮은 점수를 기준으로 정렬을 해..