1. %를 이용한 풀이import sysinput = sys.stdin.readlineN, K = map(int, input().split())array = [x+1 for x in range(N)]removed = []idx = 0while array: idx += K-1 # idx가 배열의 길이를 초과하면 다시 처음으로 돌아간다. idx = idx%len(array) removed.append(array.pop(idx))# f""과 join을 활용하여 출력print(f"") 2. deque를 이용한 풀이import sysfrom collections import dequeinput = sys.stdin.readlineN, K = map(int, input().split())que..
얼핏 보기엔 매우 간단한 A리스트에서 M리스트의 값을 찾는 문제이지만 시간 제한에 함정이 있다.처음엔 in으로 쉽게 풀어보려 했지만 시간 초과가 났다. 검색해보니 본 문제는 '이진 탐색' 알고리즘을 적용하여 풀어야 하는 문제였다. (in으로 풀지 못하는 건 아니다) in, 이진 탐색 두 가지 풀이로 풀어보았다. 1. in을 사용한 풀이import sysinput = sys.stdin.readlineN = int(input())# set으로 미리 중복을 제거해주지 않으면 시간 초과N_list = set(list(map(int, input().split())))M = int(input())M_list = list(map(int, input().split()))for i in M_list: if(i in..
import sysinput = sys.stdin.readline# 알파벳의 index값을 가져오기 위해 리스트화alp = list('abcdefghijklmnopqrstuvwxyz')L = int(input())M = 1234567891word = input().rstrip()hash_val = 0for i in range(L): # alp의 index에 +1 hash_val += (alp.index(word[i]) + 1) * 31 ** i # ASCII - 96으로도 가능 # idx = ord(word[i]) - 96 # hash_val += idx * 31 ** i# 문제에서의 mod는 나머지를 나타낸다고 한다# 위에서 구한 값에서 M을 나눈 나머지를 구하자print(h..
import sysinput = sys.stdin.readlineN = int(input())# 리스트 컴프리헨션으로 words 생성words = [input().rstrip() for _ in range(N)]# 문자 리스트의 중복을 제거words = list(set(words))# sort를 2번 실행# words.sort() -> 1. 사전을 기준으로 정렬# words.sort(key=len) -> 2. 문자 길이를 기준으로 정렬# sort에 조건 2개 추가 (길이, 사전적 정렬)words.sort(key=lambda x: (len(x), x))# sorted 사용 (sort와 달리 결과 return)# words = sorted(words, key=lambda x: (len(x), x))for i..
import sysinput = sys.stdin.readlinen = int(input())member = []for _ in range(n): age, name = input().rstrip().split() age = int(age) # 간단한 정렬을 위해 key가 없는 tuple 형식으로 리스트에 입력 member.append((age, name)) # sorted 함수를 활용해 정렬# 정렬 기준인 key를 lambda 함수로 tuple의 0번째(age)를 기준으로 잡음member = sorted(member, key=lambda x: x[0])for i in member: print(i[0], i[1]) 참고한 블로그 파이썬 마스터하기 : 람다(Lambda..
import sysinput = sys.stdin.readlinewhile True: nums = list(map(int, input().split())) # a,b,c 모두가 0일 경우 break if sum(nums) == 0: break # nums 배열을 오름차순으로 정렬 nums.sort() # a제곱 + b제곱 = c제곱일 시 맞음 if nums[2] ** 2 == (nums[0] ** 2 + nums[1] ** 2): print("right") else: print("wrong")
import sysinput = sys.stdin.readline# X번 반복X = int(input())# 1픽셀당 1만큼 배열을 차지한다고 가정, 전체 = 100paper = [[0] * 100 for _ in range(101)]# 채워진 부분의 넓이area = 0for _ in range(X): h, v = map(int, input().split()) # 주어진 위치값에 해당하는 paper 부분을 1로 채워준다 for i in range(h, h+10): for j in range(v, v+10): paper[i][j] = 1 for i in range(len(paper)): # paper에서 1이 있는 만큼 넓이에 더함..
[아이디어]1. 크로아티아 알파벳을 리스트에 담는다.2. 리스트를 for문을 돌리며 개수를 세며 검증이 끝난 알파벳은 원래 단어에서 제외한다.3. cnt와 제외한 글자의 길이를 더한다. [코드]import sysinput = sys.stdin.readlineword = input().rstrip()replace_word = wordch_list = ["c=", "c-", "dz=", "d-", "lj", "nj", "s=", "z="]cnt = 0for i in ch_list: if word.count(i) > 0: cnt += word.count(i) replace_word = replace_word.replace(i, "")print(cnt + len(word2))[풀이..
문제알파벳 소문자로만 이루어진 단어가 주어진다. 이때, 이 단어가 팰린드롬인지 아닌지 확인하는 프로그램을 작성하시오.팰린드롬이란 앞으로 읽을 때와 거꾸로 읽을 때 똑같은 단어를 말한다. level, noon은 팰린드롬이고, baekjoon, online, judge는 팰린드롬이 아니다.입력첫째 줄에 단어가 주어진다. 단어의 길이는 1보다 크거나 같고, 100보다 작거나 같으며, 알파벳 소문자로만 이루어져 있다.출력첫째 줄에 팰린드롬이면 1, 아니면 0을 출력한다. [아이디어]1. 단어의 길이 만큼 for문을 돌려 시작과 끝을 비교한다.2. 전역변수로 bool을 선언하고 한글자라도 일치하지 않는다면 bool을 0으로 선언 import sysinput = sys.stdin.readlineword = list..
본 포스팅은 인프런에서 제공하는 '실전! FastAPI 입문' 강의를 수강후에 정리 및 복습을 위해 작성하는 글입니다.코드 분석schema의 클래스는 pydantic의 BaseModel을 상속받는다.*BaseModel : FastAPI에서 사용되는 데이터 검증 및 직렬화를 위한 도구. Request와 Response 데이터의 유효성 검사, 변환, 직렬화 등을 자동으로 처리해 줌.request.py는 클라이언트가 서버로 보내는 요청 데이터를 처리하는 모델을 정의. 데이터 유효성 검사 후 서버에서 사용할 수 있는 형태로 변환함.response.py는 서버가 클라이언트에게 보내는 응답을 처리하는 모델을 정의. 서버의 응답을 구조화하여 클라이언트에 반환.schema > request.pyfrom pydantic..