본문 바로가기

알고리즘

[백준] 1431 시리얼 번호 (Python 파이썬) www.acmicpc.net/problem/1431 1431번: 시리얼 번호 첫째 줄에 기타의 개수 N이 주어진다. N은 1,000보다 작거나 같다. 둘째 줄부터 N개의 줄에 시리얼 번호가 하나씩 주어진다. 시리얼 번호의 길이는 최대 50이고, 알파벳 대문자 또는 숫자로만 이루 www.acmicpc.net 문제 설명 다솜이는 기타를 많이 가지고 있다. 그리고 각각의 기타는 모두 다른 시리얼 번호를 가지고 있다. 다솜이는 기타를 빨리 찾아서 빨리 사람들에게 연주해주기 위해서 기타를 시리얼 번호 순서대로 정렬하고자 한다. 모든 시리얼 번호는 알파벳 대문자 (A-Z)와 숫자 (0-9)로 이루어져 있다. 시리얼번호 A가 시리얼번호 B의 앞에 오는 경우는 다음과 같다. A와 B의 길이가 다르면, 짧은 것이 먼저 .. 더보기
[백준] 9375 패션왕 신해빈 (Python 파이썬) www.acmicpc.net/problem/9375 9375번: 패션왕 신해빈 첫 번째 테스트 케이스는 headgear에 해당하는 의상이 hat, turban이며 eyewear에 해당하는 의상이 sunglasses이므로 (hat), (turban), (sunglasses), (hat,sunglasses), (turban,sunglasses)로 총 5가지 이다. www.acmicpc.net 문제 설명 해빈이는 패션에 매우 민감해서 한번 입었던 옷들의 조합을 절대 다시 입지 않는다. 예를 들어 오늘 해빈이가 안경, 코트, 상의, 신발을 입었다면, 다음날은 바지를 추가로 입거나 안경대신 렌즈를 착용하거나 해야한다. 해빈이가 가진 의상들이 주어졌을때 과연 해빈이는 알몸이 아닌 상태로 며칠동안 밖에 돌아다닐 수 .. 더보기
[백준] 1747 소수&팰린드롬 (Python 파이썬) 문제 설명 어떤 수와 그 수의 숫자 순서를 뒤집은 수가 일치하는 수를 팰린드롬이라 부른다. 예를 들어 79,197과 324,423 등이 팰린드롬 수이다. 어떤 수 N (1 ≤ N ≤ 1,000,000)이 주어졌을 때, N보다 크거나 같고, 소수이면서 팰린드롬인 수 중에서, 가장 작은 수를 구하는 프로그램을 작성하시오. 풀이 과정 소수란 1과 자기자신을 제외한 수로는 나누어 떨어지지 않는 수를 말하는데, 이 소수를 구하는 방법에는 대표적으로 세가지가 있다. ① i를 2부터 n-1까지 돌면서 i로 나누어 떨어지는 경우가 존재하지 않으면 소수 ② i를 2부터 루트n까지 돌면서 i로 나누어 떨어지는 경우가 존재하지 않으면 소수 ③ 에라토스테네스의 체 ①번과 ②번의 경우에는, 명확하게 ②번의 경우의 범위가 더 좁.. 더보기
[백준] 5525 IOIOI (Python 파이썬) www.acmicpc.net/problem/5525 5525번: IOIOI 첫째 줄에 N이 주어진다. 둘째 줄에는 S의 길이 M이 주어지며, 셋째 줄에 S가 주어진다. (1 ≤ N ≤ 1,000,000, 2N+1 ≤ M ≤ 1,000,000) www.acmicpc.net 문제 설명 N+1개의 I와 N개의 O로 이루어져 있으면, I와 O이 교대로 나오는 문자열을 PN이라고 한다. P1 IOI P2 IOIOI P3 IOIOIOI PN IOIOI...OI (O가 N개) I와 O로만 이루어진 문자열 S와 정수 N이 주어졌을 때, S안에 PN이 몇 군데 포함되어 있는지 구하는 프로그램을 작성하시오. 풀이 과정 문자열 S를 for문을 돌면서 i를 만날 경우 현재 인덱스를 stack에 넣어준다. (예를 들어, ooi.. 더보기
[프로그래머스] 메뉴 리뉴얼 (Python 파이썬) programmers.co.kr/learn/courses/30/lessons/72411 코딩테스트 연습 - 메뉴 리뉴얼 레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 programmers.co.kr 문제 설명 문제에 대한 설명이 굉장히 길어 링크로 대체합니다. 주어진 orders중에 course 개수 만큼 코스요리로 재구성할 수 있는 메뉴들을 알파벳 오름차순으로 골라내면 됩니다. 풀이 과정 풀이 ① 딕셔너리를 이용하여, 메뉴를 구성할 수 있는 모든 경우의 수를 정리합니다. 각각의 경우에 대해 개수를 세어준 후에, 해당 케이스의 주문 횟수가 2회 이상이면서, 최댓값인 경우에.. 더보기
[프로그래머스] 순위 검색 (Python 파이썬) programmers.co.kr/learn/courses/30/lessons/72412 5: queryl[j].remove("and") for i in range(len(infol)): for j in range(len(queryl)): flag = 0 for k in range(4): if infol[i][k] != queryl[j][k]: if queryl[j][k] != '-': flag = 1 break if flag == 0: if int(infol[i][4]) >= int(queryl[j][4]): answer[j] += 1 return answer 효율성을 통과하기 위해 사용한 방법은, 딕셔너리(자바의 hash와 비슷한 파이썬의 자료구조), 이분탐색(BinarySearch)를 이용했습니다. .. 더보기
[프로그래머스] 줄 서는 방법 (Python 파이썬) programmers.co.kr/learn/courses/30/lessons/12936 코딩테스트 연습 - 줄 서는 방법 n명의 사람이 일렬로 줄을 서고 있습니다. n명의 사람들에게는 각각 1번부터 n번까지 번호가 매겨져 있습니다. n명이 사람을 줄을 서는 방법은 여러가지 방법이 있습니다. 예를 들어서 3명의 사람 programmers.co.kr 문제 설명 입력으로 n과 k를 입력받는다. 1번부터 n번까지 n명의 사람들이 줄을 서 있다. 이 n명의 사람이 줄을 서는 방법에는 여러가지가 있는데, 방법을 사전 순으로 정렬하였을 때 제일 첫 방법을 1번째 방법, 마지막 방법을 n번째 방법이라 하자. 이 때, k번째 방법을 구하면 된다. 풀이 과정 처음 배열(answer)는 1부터 n번까지 차례대로 [1,2,3.. 더보기
[프로그래머스] 숫자의 표현(Python 파이썬) programmers.co.kr/learn/courses/30/lessons/12924 코딩테스트 연습 - 숫자의 표현 Finn은 요즘 수학공부에 빠져 있습니다. 수학 공부를 하던 Finn은 자연수 n을 연속한 자연수들로 표현 하는 방법이 여러개라는 사실을 알게 되었습니다. 예를들어 15는 다음과 같이 4가지로 표현 할 programmers.co.kr 문제 설명 n이라는 숫자가 있을 때, 이 숫자를 연속된 수들의 합으로 나타낼 수 있는 가지 수를 구하는 문제이다. 예를 들어, n = 15이면 1 + 2 + 3 + 4 + 5 = 15 4 + 5 + 6 = 15 7 + 8 = 15 15 = 15 이렇게 나타낼 수 있으므로 n=15일 때의 정답은 4이다. 풀이 과정 일일이 확인해가며 해당 경우에 참인지 거짓인.. 더보기