구현 43

[백준] 17413 단어 뒤집기2 (Python 파이썬)

www.acmicpc.net/problem/17413 17413번: 단어 뒤집기 2 문자열 S가 주어졌을 때, 이 문자열에서 단어만 뒤집으려고 한다. 먼저, 문자열 S는 아래와과 같은 규칙을 지킨다. 알파벳 소문자('a'-'z'), 숫자('0'-'9'), 공백(' '), 특수 문자('')로만 이루어져 www.acmicpc.net 문제 설명 문자열 S가 주어졌을 때, 이 문자열에서 단어만 뒤집으려고 한다. 먼저, 문자열 S는 아래와과 같은 규칙을 지킨다. 알파벳 소문자('a'-'z'), 숫자('0'-'9'), 공백(' '), 특수 문자('')로만 이루어져 있다. 문자열의 시작과 끝은 공백이 아니다. ''가 문자열에 있는 경우 번갈아가면서 등장하며, '

[백준] 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/64064 코딩테스트 연습 - 불량 사용자 개발팀 내에서 이벤트 개발을 담당하고 있는 "무지"는 최근 진행된 카카오이모티콘 이벤트에 비정상적인 방법으로 당첨을 시도한 응모자들을 발견하였습니다. 이런 응모자들을 따로 모아 불량 programmers.co.kr 문제 설명 user_id 중에서 banned_id에 의해 필터링되는 user_id 목록의 경우의 수를 구하는 문제입니다. 문제의 설명이 꽤 길어서 링크를 함께 첨부하였습니다 자세한 문제 설명은 위 링크를 참조하세요! 풀이 과정 문제에서 배열의 범위가 굉장히 작기 때문에, 완전탐색을 이용하여 풀어도 됩니다! 그래서 저는 순열(permutation)을 이용하여 user_id로 만..

[백준] 2869번 달팽이는 올라가고 싶다 (Python 파이썬)

문제 설명 땅 위에 달팽이가 있으며, 이 달팽이는 V미터까지 올라가게 되는데 낮에 A미터를 올라가고 밤에 B미터를 내려간다. 단, 정상에 도착했다면 내려가지 않는다. 이 때, 달팽이가 V미터까지 올라가는데 총 며칠이 걸리는지 구하면 된다. 풀이 과정 낮에는 무조건 올라가기만 하고 밤에는 무조건 내려가기만 한다. 그래서 낮에 올라간 높이가 그 날의 최대 높이가 될 것이고, 정상에 도착하더라도 무조건 낮에 도착을 하게된다. 그래서 사실상 달팽이가 올라가야 하는 최종 높이는 V-B미터가 된다. 그리고 하루동안 올라갈 수 있는 높이는 A-B미터로 한정되어 있기 때문에 총 걸리는 일수는 (V-B) / (A-B) 이 될 것이다. 여기서 나누어 떨어지지 않고, 5.3 이런식으로 걸리게 된다면 5일안에는 도달을 못하기..

[백준] 1193 분수찾기 (Python 파이썬)

www.acmicpc.net/problem/1193 1193번: 분수찾기 첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다. www.acmicpc.net 문제 설명 문제에서, 나열된 분수들을 지그재그 순서로 찾아간다고 했는데, 이 재그재그를 설명하는 예시가 부족해 보였다. 그래서 초반에 이 지그재그 규칙을 찾아내느라 시간을 많이 썼던 것 같다. X가 주어지면 X번째 분수를 출력하면 된다. ( 5번째 분수는 2/2 ) 풀이 과정 위의 그림을 보면 일정한 규칙이 나타남을 알 수 있다. 라인에 있는 분수의 개수는 1라인은 1개, 2라인은 2개, 3라인은 3개, 4라인은 4개... 이런 식으로 늘어감을 알 수 있다. 짝수라인은 시작점에서 끝점으로 갈수록 분자가 1씩 늘어가고 분모가 1씩 감소하며 홀수..

[백준] 5212 지구온난화 (Python 파이썬)

www.acmicpc.net/problem/5212 5212번: 지구 온난화 첫째 줄에 지도의 크기 R과 C (1 ≤ R, C ≤ 10)가 주어진다. 다음 R개 줄에는 현재 지도가 주어진다. www.acmicpc.net 문제 설명 지도 크기 N x M을 입력받은 후에 각각의 좌표 칸 바다(.) 인지 땅(X)인지를 입력한다. 이 때, 50년 후의 섬 주변( 상, 하, 좌, 우) 으로 3개 이상의 바다가 존재한다면 그 땅은 바다로 변하게 된다. 또한 바다만 있는 줄이나 칸은 모두 사라진다. ( 맵의 바깥쪽은 모두 바다이기 때문에 바다만 있는 줄, 칸은 생략된다) 따라서 50년 후에는 당연히 맵의 크기는 줄어들 것이다. 이 때, 50년 후의 지도를 출력하면 된다. 위의 예제로 예를 들면, (3,0)의 X는 위..

[백준] 3107 ipv6 (Python 파이썬)

https://www.acmicpc.net/problem/3107 3107번: IPv6 첫째 줄에 올바른 IPv6 주소가 주어진다. 이 주소는 최대 39글자이다. 또한, 주소는 숫자 0-9, 알파벳 소문자 a-f, 콜론 :으로만 이루어져 있다. www.acmicpc.net 문제 설명 IPv6의 주소는 32자리의 16진수를 4자리씩 끊어 나타낸다. 이때, 각 그룹은 콜론 (:)으로 구분해서 나타낸다. 예를 들면, 2001:0db8:85a3:0000:0000:8a2e:0370:7334 이런 식으로 나타낸다. 문제에서는, 규칙 두가지가 존재한다. 1. 각 그룹의 앞자리의 0의 전체 또는 일부를 생략 할 수 있다. 위의 IPv6을 축약하면, 다음과 같다 2001:db8:85a3:0:00:8a2e:370:7334..