프로그래머스 (13) 썸네일형 리스트형 [프로그래머스] 괄호 회전하기 (파이썬) 문제 https://school.programmers.co.kr/learn/courses/30/lessons/76502 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 문자열을 이용한 문제를 몇번 풀어보았다면 쉽게 풀리는 문제였다. 나는 다음과 같이 문제를 접근했다. 1. 문자열을 회전 시켜 새로운 문자열을 만든다. 2. 새로운 문자열에 대해서 올바른 괄호 문자열인지 판별한다 2-1. 올바른 괄호 문자열일 경우 answer+1를 해준다. 2-2. 올바른 문자열이 아닐경우 넘어간다. 코드 def solution(s): answer = 0 for i in.. [프로그래머스] H-Index (파이썬) 문제 풀이 문제가 이해되지 않아서 고생한 문제다. 문제에서 H-index에 대해서 설명하며 다음과 같은 조건을 말해준다. 1. H번 이상 인용된 논문이 2.H편 이상이고 3. 나머지는 H번 이하 인용된다 해당 조건을 만족하는 H의 값들 중에서 가장 큰 수를 찾아서 반환하면 된다. 문제를 풀기 위해 내림차순으로 정렬을 해준다. 그후 리스트의 배열과 리스트의 원소값과 비교를 한다. (idx >= citation) 만약 해당 조건을 만족한다면 현재 위치의 원소부터는 1,2,3번 조건을 만족하지 못한다는 이야기가 된다. 그러므로 이전 idx를 반환하여준다. 이때 "=" 조건도 꼭 붙여주어야 한다. 추가로 H-Index에 대해서 아래의 게시글을 보면 이해가 빠를듯 하다. https://www.ibric.org/m.. [프로그래머스] 멀리 뛰기 (파이썬) 문제 풀이 위 문제는 현재 위치에서 한 칸 가거나 두 칸 가서 끝까지 가려면 얼마나 가야하는지 구하는 문제다. 처음에는 재귀와 DP를 섞어서 문제를 풀었으나 재귀를 너무 깊게 호출해서 런타임 에러가 발생했다. 그렇기에 다른 사람들의 코드를 참고하였다. 아래 풀이는 피보나치 수열처럼 접근한 문제이다. 생각해보면 어차피 앞으로 두칸 혹은 한칸만 이동할수 있기에 현재 위치 까지 오기까지 나의 위치 - 2 까지 올수있는 방법 + 나의 위치 - 1 까지 올수있는 방법을 더한것과 동일하다. 코드 def solution(n): if n [프로그래머스] N개의 최소공배수 (파이썬) 문제 https://school.programmers.co.kr/learn/courses/30/lessons/12953 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 이번 문제는 단순히 접근해서 배열에서 하나씩 뽑아가면서 직접 최소공배수를 구했다. 최소공배수를 구하는 로직은 직접 구현했으며 인자로 들어오는 값 2개중 작은값부터 두 수의 곱까지 반복문을 돌리면서 %연산자를 적용한다. 코드 def solution(arr): arr.sort() answer = arr[0] for x in iter(arr): answer = lcm(x, answer) re.. [프로그래머스] 예상 대진표 (파이썬) 문제 풀이 문제에서 요구하는대로 풀었다가는 시간초과가 나오는 문제이기에 조심해야 한다. 문제를 풀어보려다 결국 풀리지가 않아 다른 블로그 글을 참고 하였다. 내가 기존에 풀었던 방법은 모든 참가자들끼리 시합을 벌여서 임의의 참가자들 다시 대진표에 넣는 방식을 사용했다.(마치 큐처럼) 그러나 올바른 풀이는 모든 참가자들의 시합을 벌이는것이 아니라 관심있는 참가자들만 시합을 진행시켰다. 풀이는 아래와 같다 - 1번과 2번 참가자의 번호를 /2 하면 몫은 1과 0이다. - 3번과 4번 참가자의 번호는 /2하면 몫은 1과 0이다. 그렇다면 - 1번과 2번 참가자의 번호에 +1을 하여서 /2를 하면 몫은 1, 1이다. - 3번과 4번 참가자의 번호에 +1을 하여서 /2를 하면 몫은 2, 2이다. 즉 해당 참가자 .. [프로그래머스] 카펫 (파이썬) 문제 https://school.programmers.co.kr/learn/courses/30/lessons/42842 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 갈색과 노란색의 격자의 개수가 주어졌을때 전체 카펫의 크기를 구하는 문제이다. 언뜻 보면 쉬울수 있지만 함정이 존재한다. 이 문제는 손으로 그려가다 보면 풀이 방식이 금방 이해가 갈것이다. 1. 갈색과 노란색의 격자 수를 더한 값을 구한다 2. 노란색이 중앙에 위치하려면, 즉 노란색 격자들을 전부 갈색으로 감싸는 방식으로 카펫을 구성하려면 카펫의 세로 길이는 최소 3부터 시작한다. 3... [프로그래머스] 영어 끝말잇기 (파이썬) 문제 https://school.programmers.co.kr/learn/courses/30/lessons/12981 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 문제는 끝말잇기를 지는 사람이 누구인지 그리고 몇번째 차례에서 패배했는지를 출력하는 문제였다. 끝말잇기의 패배 조건은 다음과 같다. 1. 이전에 나온 단어를 뱉으면 게임에서 진다. 2. 직전에 나온 단어의 마지막 스펠링과 현재 뱉는 단어의 시작하는 스펠링이 다르면 게임에서 진다. 나는 여기서 1번 조건에 집중을 해서 set을 생각했다. 프로세스는 다음과 같다. 1. 단어를 순서대로 받아.. [프로그래머스] 짝지어 제거하기 (파이썬) 문제 https://school.programmers.co.kr/learn/courses/30/lessons/12973 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설명 처음 접근을 문자열로 하여 분기처리를 하는등 어렵게 접근하였던 문제였다. 하지만 이 문제는 짝을 맞추는 문제고 이는 스택을 이용하면 비교적 쉽게 풀린다는 장점이 존재한다. 여기까지 생각이 다다른다면 이 다음은 단순 구현이다. 먼저 문제를 문자열을 차례차례 스택에 넣고 만약 스택의 가장 위에 존재하는 원소가 문자열에서 가르키고 있는 원소와 동일하다면 pop을 하고 아니면 append를 하.. [프로그래머스] 피보나치 수 (파이썬) 문제 https://school.programmers.co.kr/learn/courses/30/lessons/12945 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설명 단순 재귀 함수이지만 함정이 존재한다. 파이썬을 연습하는 입장에서 재귀 함수를 연습하는 문제라고 생각을 하고 Fibo()라는 함수를 정의하고 실행 시켰다. 문제에서 주어진 input값들은 정상적으로 동작하지만 문제를 재출하니 몇몇 테스트 케이스에서는 실패라고 나왔다. 몇번이고 나의 코드를 확인하고 그랬지만 오류점을 찾지 못해서 구글링을 했고 파이썬과 JS은 재귀적으로 함수를 호출하는데에.. [프로그래머스] 다음 큰 숫자 (파이썬) 설명 파이썬에서 10진수의 값을 2진수로 바꾸는 bin() 함수와 [string].count(str) 함수에 대해서 알고 있으면 쉽게 풀리는 문제였다. 먼저 조건 1을 만족하기 위해 n초과 하는 수부터 시작해서 끝을 정해두지 않고 무한반복을 한다. 그리고 초과하는 수에 대해서 bin()함수를 통해서 이진수로 변경을 하고 입력받은 n에 대해서 n.count('1')을 통해 문자 1의 갯수와 현재 증가 값에 대한 answer.count('1')를 하여 만약 일치한다면 정답이라 판단하여 반환한다. 코드 def solution(n): answer = 0 count_n_one = bin(n)[2:].count('1') while True: n = n + 1 answer = n count_answer_one = b.. 이전 1 2 다음 목록 더보기