We will find a way, we always have.

-interstellar

코딩 38

[백준] 14425번: 문자열 집합 - 파이썬

📕 풀이 제목처럼 집합을 사용해서 풀면 되는 문제이다. 처음에는 차집합을 이용하여 풀이 하였으나 오답으로 처리되었고, 바로 떠오른 다른 방법은 하나하나 체크해주는 방법이었다. 💻 코드 import sys input = sys.stdin.readline n,m = map(int,input().rstrip().split()) cnt = 0 s = set() check = set() for i in range(n): s.add(input().rstrip()) # 기준이 되는 집합 for j in range(m): word = input().rstrip() if word in s: # 기준 집합에 새로 새로 입력된 문자가 있다면 카운트 cnt += 1 print(cnt) 📎 문제 링크 : 문자열 집합 14425..

[백준] 7795번: 먹을 것인가 먹힐 것인가 - 파이썬

📕 풀이 정렬 후 투포인터를 사용하여 a의 값 하나를 b의 값 전부 하나하나 비교해가면서 a의 값이 클때의 갯수를 카운트 해준다. 💻 코드 import sys input = sys.stdin.readline for i in range(int(input().rstrip())): # a와 b의 갯수를 입력받음 a, b = map(int, input().rstrip().split()) # a와 b 정보를 입력받음(생명체 A, B) a_num = list(map(int, input().rstrip().split())) b_num = list(map(int, input().rstrip().split())) # 내림차순 정렬 a_num.sort(reverse=True) b_num.sort(reverse=True) ..

[백준] 1193번: 분수찾기 - 파이썬

🔗 문제링크 : 분수찾기 1193번: 분수찾기 첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다. www.acmicpc.net 📕 문제 풀이 문제 풀이 하기전에 조금 주저리 주저리 하자면,,, 요즘 조금 바빠서 글 올리는 빈도수가 조금 줄었다. 그래도 하루에 하나씩은 올리려고 노력하고 있움!!! 파스칼의 삼각형(?) 과 비슷한 방향으로 움직이는데 한번은 오른쪽으로, 한번은 왼쪽으로 이런식으로 반복한다. 그리고 분수의 숫자들은 분자 + 분모 값이 하나씩 증가한다. 이 점을 이용하여 코드를 짰다. 💻 코드 div = [i for i in range(1, 4473)] n = int(input()) cnt = 1 for d in div: if n - d

[백준] 1620번: 나는야 포켓몬 마스터 이다솜 - 파이썬

⚽ 서론 dict() 형 그러니까 해시를 사용한 집합과 맵에서 새로운 걸 발견해서 글로 남기기로 했다! 🧩문제 해석 포켓몬 이름을 받은 뒤 받은 순서대로 포켓몬 도감에 저장한다. 포켓몬 이름을 문제로 냈을 때 그 포켓몬이 몇번째로 도감에 등록됐는지 출력하고, 수를 입력했을 때는 그 수의 등록된 포켓몬 이름을 출력하면 되는 문제 (걸그룹 마스터 문제랑 비슷한 유형이다) 📖 풀이 처음에는 포켓몬 이름을 입력받으면 key에는 이름을, value에는 수를 저장한 다음 문제를 맞출 때 이름이 들어오면 포켓몬도감[이름] 이런식으로 출력하면 됐지만 수가 입력될 때는 값을 하나하나 찾아야 했다. 즉 key가 입력되면 바로 찾을 수 있지만 value가 입력되고 key 값을 찾으려면 하나하나 다 돌아야 했었다. value..

[백준] 1495번: 기타리스트 - 파이썬

📕 문제해석 기타 연주를 하는데 각 곡마다 볼륨을 변경하려고 한다. 곡마다 변경할 수 있는 숫자가 정해져있다. 그 숫자로 현재 볼륨에서 더하거나 뺄 수가 있다. 볼륨이 음수가 나오면 안되고 주어진 볼륨 값을 넘을 수도 없다. 이때 최대 볼륨은? 📖 문제풀이 1. n, s, m과 v를 입력받고 m 길이를 가진 리스트 n+1개를 만든다. (다이나믹 프로그래밍을 위한) 2. 현재 볼륨을 체크한다. 3. 시작 볼륨에서 주어진 v[i]를 더할 수 있다면 더하고 뺄 수 있다면 빼준다. 0

[백준] 2023번: 신기한 소수

🧩문제 해석 자리수 n이 주어졌을 때 그 n 자리수인 신기한 소수를 출력하는 문제 신기한 소수란 n = 4 일 경우 num[0] 도 소수 num[:2] 도 소수 num[:3] 도 소수 num 도 소수라면 num은 신기한 소수이다. 즉 첫번째 숫자도, 첫번째부터 두번째숫자도, ... 첫번째부터 n번째숫자도 소수라면 신기한 소수인 것이다. 🔍 고민 모든 숫자를 대입해가며 소수인지 판별한다면 시간초과가 날게 뻔했다. (요즘 시간초과가 많이 난다...ㅎ) 예제 문제를 보니 알 수 있는 점이 있었다. 첫번째 숫자는 무조건 2,3,5,7 이고 그 다음에 오는 숫자들은 1,3,7,9 들이 막 조합되어서 나타났다. 돌려볼 숫자들이 절반이상 줄어들었다! 첫번째 숫자가 2, 3, 5, 7 인 이유! 어찌보면 당연한 이야기..

[백준] 1406번: 에디터 - 파이썬

🧩문제 해석 스택과 자료구조를 이용한 단순 구현 문제다. 이전에 한번 풀었던 유형이여서 쉽게 풀었던것 같다. 그때 열심히 고민했던게 아직 머리에 남아 있었다. 📘풀이 들어 오는 입력들을 L, B, P $, D 로 잘 구분하여 처리해준다. L 입력 : 문자열.pop() 그리고 그 문자를 새로운 스택 수열에 append() B 입력 : 문자열.pop() P $ 입력 : 문자열.append($) D 입력 : 스택.pop() 그리고 그 스택 문자를 문자열에 append() 이 때 조심해야하는게 스택리스트나 문자열 리스트가 비어있으면 pop() 함수 사용시 에러가 난다. 처리를 잘 해줘야 한다. 💻코드 import sys input = sys.stdin.readline word = list(input().rstr..

[백준] 13305번: 주유소 - 파이썬

📎문제링크: https://www.acmicpc.net/problem/13305 13305번: 주유소 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1 www.acmicpc.net 🧩문제 해석 전형적인 그리디 문제! 왼쪽에서 오른쪽으로 이동하는데 기름값을 가장 아끼며 주유하는 방법을 찾는거였다. 기름통의 한계는 없다고 주어졌기에 방법은 간단하다. 조금씩 조금씩 주유해가다가 가장 저렴한 주유소에서 가득 채운다음 가면 된다. 📘풀이 현재 주유소의 기름값하고 다음 주유소의 기름값하고 비교해가면서 기름값을 갱신하고 거리수랑 곱해준다. 💻코드 n = int..

[백준] 4375번: 1 - 파이썬

📎문제링크: https://www.acmicpc.net/problem/4375 4375번: 1 2와 5로 나누어 떨어지지 않는 정수 n(1 ≤ n ≤ 10000)가 주어졌을 때, 1로만 이루어진 n의 배수를 찾는 프로그램을 작성하시오. www.acmicpc.net 🧩문제 해석 2와 5로 나누어 떨어지지 않는 정수 n이 주어졌을 때 1로만 이루어진 n의 배수를 찾고 1로만 이루어진 수중 가장 작은 수의 자릿수를 출력하면 되는 문제이다. 1로만 이루어진 n의 배수라는것 예제로 예를들면 111인것이다. 111은 3의 배수이면서 1로만 이루어진 수이고 3의 배수중 1로만 이루어진 수중에서 가장 작다. 📘풀이 n을 입력받고 1, 11, 111 이렇게 하나하나씩 n으로 나누어서 나머지가 0일때 그 자리수를 출력하는..

[백준] 1789번: 수들의 합 - 파이썬

📎문제링크: https://www.acmicpc.net/problem/1789 1789번: 수들의 합 첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다. www.acmicpc.net 💼서론 요즘 열심히 그리디 알고리즘 파고 있다. 🤸‍♂️ 그리디 방법을 발견하면 뭔가 묘한 쾌감이 있다. 🧩문제 해석 서로 다른 자연수 N을 더한 값인 S가 주어졌을 때 N의 최대값을 구하는 문제! 📘풀이 1. N의 갯수를 최대로 만드려면 N은 1부터 시작해 N의 값을 +1 씩 증가하여 S를 만들면 그것이 N을 최대갯수로 만드는 것이다. 예제를 살펴보자! 200은 1+2+3+4+...+18+29 총 19개이다. 1부터 18까지는 N이 하나씩 증가하였지만 마지막 값은 1증가한 값이 아니었다. 이 마지막 ..