목록Python (138)
나의 개발일지
문제 : https://www.acmicpc.net/problem/12919 dfs 🔑 마지막이 A일 때, 처음이 B일 때 t[-1]이 "A"일 때 마지막 "A"빼고 재귀 호출 t[0]이 "B"일 때 뒤집은 후 마지막 "B"빼고 재귀 호출 각각 if 조건으로 두 가지 분기로 나눈다. s = input() t = input() def dfs(t): if len(s) == len(t): if s == t: print(1) exit() else: return 0 if t[-1] == "A": dfs(t[:-1]) if t[0] == "B": dfs(t[::-1][:-1]) dfs(t) print(0)
문제 : https://www.acmicpc.net/problem/12904 그리디 🔑 S에서 T로 만드는 방법이 아닌 T에서 S를 만드는 방법 T의 가장 뒤가 A면 뺀다. T의 가장 뒤가 B면 빼고 뒤집는다. S와 T의 길이가 같아지면 비교한다. s = input() t = list(input()) while len(s) != len(t): if t[-1] == "A": t.pop() else: t.pop() t.reverse() if s == "".join(t): print(1) else: print(0)
문제 : https://school.programmers.co.kr/learn/courses/30/lessons/17687 🔑 진법 변환 방법 def solution(n, t, m, p): # 진법, 구할 숫자의 개수, 인원, 순서 answer = '' def change(x): s = "" while x != 0: s += lst[x % n] x //= n return s[::-1] lst = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"] i = 1 numbers = "0" p -= 1 # 인덱스 위치는 순서 -1 이라서 빼준다. while len(answer)
문제 : https://school.programmers.co.kr/learn/courses/30/lessons/17684 인덱스 에러를 주의해서 풀었다. def solution(msg): answer = [] dict = {} for i in range(26): # 사전 초기화, 'A' : 1 dict[chr(65+i)] = i+1 index = 27 k = 0 for i in range(len(msg)): x = msg[k] # 현재 입력 while x in dict: # 사전에 있으면 if k + 1 > len(msg)-1: # 문자열 길이 넘으면 answer.append(dict[x]) # 남은 글자에 대한 색인 번호 추가 return answer x += msg[k+1] # 다음 글자와 연결 k..
문제 : https://school.programmers.co.kr/learn/courses/30/lessons/92335 0을 기준으로 split 해서 나온 숫자들만 소수인지 판별 def solution(n, k): answer = 0 b = "" while n != 0: # 진수 변환 b += str(n % k) n //= k b = b[::-1] # 문자열 뒤집기 b = b.split("0") # 0을 기준으로 자르기 for i in b: # 소수 구하기 sw = 0 if i == "1" or i == "": continue i = int(i) for j in range(2, int(i ** 0.5) + 1): if i % j == 0: sw = 1 break if sw == 0: answer +=..
문제 : https://school.programmers.co.kr/learn/courses/30/lessons/17677#qna 교집합, 합집합, 공집합, 다중집합 다중집합이란 말 때문에 집합연산자 |, &을 사용 안 했지만 새로운 교집합, 합집합을 만들어서 이 원소들로 개수만 세면 되는 거였다 😂 def makeSet(st, se): # 다중 집합으로 변환 for i in range(len(st)-1): x = st[i] y = st[i+1] if x.isalpha() and y.isalpha(): se.append(x+y) def solution(str1, str2): a, b = 0, 0 # 교집합 길이, 합집합 길이 str1, str2 = str1.upper(), str2.upper() set1..
문제 : https://school.programmers.co.kr/learn/courses/30/lessons/81301 dictionary, replace 활용 def solution(s): d = {"zero" : "0", "one" : "1", "two" : "2", "three" : "3", "four" : "4", "five" : "5", "six" : "6", "seven" : "7", "eight" : "8", "nine" : "9", } for i in d: if i in s: s = s.replace(i, d[i]) return int(s) print(solution("one4seveneight"))
문제 : https://www.acmicpc.net/problem/11000 그리디, 정렬, 우선 순위 큐 import sys from heapq import heappush, heappop input = sys.stdin.readline n = int(input()) lst = [list(map(int, input().split())) for _ in range(n)] # s에 시작 t에 끝나는 수업 [s, t] lst.sort() # 수업 시작 시간으로 정렬 room = [] heappush(room, lst[0][1]) # 첫 강의 끝 시간 for i in range(1, n): if lst[i][0] < room[0]: # 다음 수업 시작 시간이 현재 수업 종료 시간보다 작으면 (강의 중이면) h..