Algorithm/프로그래머스

    [Python] 프로그래머스 Lv2 - 다음 큰 숫자

    [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)

    [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 - 올바른 괄호

    [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)

    [Python] 프로그래머스 Lv2 - [3차] 파일명 정렬 (2018 KAKAO BLIND RECRUITMENT)

    🔗 문제링크 코딩테스트 연습 - [3차] 파일명 정렬 파일명 정렬 세 차례의 코딩 테스트와 두 차례의 면접이라는 기나긴 블라인드 공채를 무사히 통과해 카카오에 입사한 무지는 파일 저장소 서버 관리를 맡게 되었다. 저장소 서버에는 프로그램 programmers.co.kr 📂 분류 구현 정렬 💡 풀이 문자열 파싱 해서 해결하는 문제이다. 접근방식 파일을 한 문자씩 탐색하다가 숫자가 나온다면 현재 인덱스 전까지의 문자열을 head에 저장하고 나머지는 number에 저장을 한다. number 문자열을 탐색하다가 숫자가 아닌 다른 문자가 나온다면 현재 인덱스 전까지의 문자열을 저장하고 number에 저장하고 나머지는 tail에 저장한다. 문제 설명에 tail은 정렬 기준이 아니기 때문에 제외하고 head -> n..

    [Python] 프로그래머스 Lv2 - 양궁대회 (2022 KAKAO BLIND RECRUITMENT)

    [Python] 프로그래머스 Lv2 - 양궁대회 (2022 KAKAO BLIND RECRUITMENT)

    🔗 문제링크 코딩테스트 연습 - 양궁대회 문제 설명 카카오배 양궁대회가 열렸습니다. 라이언은 저번 카카오배 양궁대회 우승자이고 이번 대회에도 결승전까지 올라왔습니다. 결승전 상대는 어피치입니다. 카카오배 양궁대회 운영위원 programmers.co.kr 📂 분류 백트래킹 완전탐색 💡 풀이 친구가 파이썬으로 알고리즘 문제 푸는 것을 보고 파이썬이 편해 보이길래 파이썬으로 풀어보았다. 이 문제는 n의 크기가 10 이하 이므로 백트래킹 + 완전탐색으로 해결할 수 있는 문제이다. 접근 방식 라이언이 점수를 획득할지의 여부를 체크하면서 재귀 함수를 진행한다. 라이언의 최대 점수를 경신하면서 answer에 과녁 점수를 넣어준다. 가장 낮은 점수를 더 많인 경우를 반환해야 하기 때문에 낮은 점수를 기준으로 정렬을 해..

    [Java] 프로그래머스 Lv2 - [3차] 압축 (2018 KAKAO BLIND RECRUITMENT)

    [Java] 프로그래머스 Lv2 - [3차] 압축 (2018 KAKAO BLIND RECRUITMENT)

    🔗 문제링크 코딩테스트 연습 - [3차] 압축 TOBEORNOTTOBEORTOBEORNOT [20, 15, 2, 5, 15, 18, 14, 15, 20, 27, 29, 31, 36, 30, 32, 34] programmers.co.kr 📂 분류 구현 💡 풀이 문제 설명에 나와 있는 LZW 압축 과정을 구현하면 되는 문제이다. 접근 방식 A ~ Z까지 HashMap을 이용해 초기화를 한다. 현재 단어 w와 다음 단어 c를 받는다. w + c가 map에 저장되어있는지 확인하고, 저장되어있다면 continue로 건너뛰어 위 과정을 다시 진행한다. w + c가 없다면, w 값을 출력하고 map에 저장한 다음 w를 초기화시켜준다. 💻 코드 import java.util.ArrayList; import java.u..