♟️ 알고리즘/알고리즘_백준 73

[Python][백준] 19941. 햄버거 분배

링크🔗https://www.acmicpc.net/problem/19941🗒️파이썬 코드 풀이N,K = map(int,input().split())lst = list(input())cnt = 0for i in range(N): if lst[i] == "P": for s in range(i-K,i+K+1): if 0 1. 더 많은 사람들이 햄버거를 먹기위해서, 최대한 왼쪽부터 먹어줘야한다. 2. 우선 lst[i] = "P"일 때의 조건을 세팅해두고 3. s의 범위를 (i-k ~ i+k)로 해두고 4. 0 ≤ N   📌  문제 코멘트범위 설정만 잘하면 어렵지 않은 문제이지만,나는 저 범위 설정을 잘 못해서 시간이 오래 걸렸다 ...내가 풀이했던 방식은 양쪽 큰 순서대..

[Python][백준] 1515. 수 이어 쓰기

링크🔗https://www.acmicpc.net/problem/1515🗒️파이썬 코드 풀이lst = list(input())cnt = 0while lst: cnt += 1 str_cnt = str(cnt) while str_cnt and lst: if lst[0] == str_cnt[0]: lst = lst[1:] str_cnt = str_cnt[1:] print(cnt) 1. 브루드 포스 방식으로 문제 풀이를 진행한다.  (cnt 값을 계속 증가시켜, lst에 있는 숫자와 비교) 2. while을 통해 완전히 lst가 비워질 때 까지, 계속 cnt 값을 증가시킨다.  3. lst와 비교를 위해 cnt를 문자열로 바꿔준다. 4..

[Python][백준] 21921. 블로그

링크🔗https://www.acmicpc.net/problem/21921🗒️파이썬 코드 풀이N,X = map(int,input().split())lst = list(map(int,input().split()))sum_lst = [sum(lst[0:X])]for i in range(0,N-X): tmp_sum = sum_lst[i] + lst[i+X] - lst[i] sum_lst.append(tmp_sum)if sum(lst) > 0 : print(max(sum_lst)) print(sum_lst.count(max(sum_lst))) else : print("SAD") 1. 입력 받은 리스트 0~X-1 까지의 합을 sum_lst 첫 번째에 넣어준다. 2. X일 동안..

[Python][백준] 20920. 영단어 암기는 괴로워

링크🔗https://www.acmicpc.net/problem/20920🗒️파이썬 코드 풀이import sysinput = sys.stdin.readlineN, M = map(int, input().split()) # 단어 개수, 단어 길이word_lst = {}for n in range(N): word = input().rstrip() if len(word) >= M : if word in word_lst: word_lst[word] += 1 else: word_lst[word] = 1 word_lst = sorted(word_lst.items(),key = lambda x: (-x[1],-len(x[0]), x[0]..

[Python][백준] 2164. 카드2

링크🔗https://www.acmicpc.net/problem/2164🗒️파이썬 내 코드 풀이from collections import dequeN= int(input())lst = [i for i in range(1,N+1)]q = deque(lst)while len(q) != 1: q.popleft() q.append(q.popleft())print(q[0]) 1. 카드 리스트를 앞,뒤 자유롭게 버리고 옮길 수 있어야 되기 때문에, 자료구조 Queue를 쓰면 편하다. 2. 1 ~ N 까지의 카드 리스트를 q로 변환 해준다. 3. 카드가 1장 남을 때 까지, 첫 번째 장은 버리고 두 번째 장은 맨 뒤에 넣어주기를 반복한다.   📌  문제 코멘트Queue만 알면 아주 간단히 풀 수 있는 ..

[Python][백준] VS코드 환경 파일 실행 및 입력 Tip

🔍알고리즘 VS 코드 환경 세팅맨 처음 알고리즘 문제를 풀 때, VS코드에서 이 버튼을 매번 누르면서 실행을 하고, 입력값을 복붙했다. 뭐 한 두번이면 괜찮은데,코드 테스트 하고, 틀린 것들이 있으면 다시 실행을 위해 여러번 눌러야한다,(이 때 진짜 손목 너무 아픔...) 그래서 Jupyter notebook에서 셀 키면서 CTRL+ Enter 누르면서 했는데, 너무 지저분해서, 다시 VS 코드로 돌아왔다 😂 혹시 나같은 사람을 위해, 조금이나마 도움이 되는 팁을 남겨본다.🌟실행 단축키 설정 VS 실행하면, 좌측 하단에 톱니바퀴 모양의 "관리"가 있는데, 이걸 누르고 "바로 가기 키"를 눌러준다.  그러면 검색창이 뜨는데 "Python 실행" 이라고 치고,"Python:터미널에서 Python 파일 ..

[Python][백준] 1157. 단어 공부

링크🔗https://www.acmicpc.net/submit/7568🗒️파이썬  풀이N = int(input())lst = []ans = []for _ in range(1,N+1): w,h = map(int,input().split()) lst.append((w,h))for i in range(N) : cnt = 0 for j in range(N) : if lst[i][0]  1. w(몸무게), h(키)를 튜플로 묶어 리스트로 만들어준다. 2. 완전 탐색으로 흔히 말하는 노가다를 해준다.- 00, 01, 02, 03, 04 / 10, 11, 12, 13, 14, 15 / . . .이런식으로 해당 lst[i]의 순위를 완전탐색으로 탐구하면 된다.  3. 완전 탐색 후..

[Python][백준] 10431. 줄세우기

링크🔗https://www.acmicpc.net/problem/10431🗒️파이썬  풀이N = int(input())for n in range(1,N+1): lst = list(map(int,input().split(" ")))[1:] sum = 0 for i in range(1,20): for j in range(i): if lst[i]  1. 원하는 값은 "몇 번 물러섰는지에 대한 개수"이기 때문에, 실제 삽입 정렬을 하지 않아도 된다. 2. (0,1) (0,2),(1,2)(0,3),(1,3),(2,3). . . 예를 (0,3),(1,3),(2,3)  부분에서  0,1,2는 이미 정렬이 되었다고 가정을 하고, 0,1,2와 3의 정렬만 신경쓴다. 이런..

[Python][백준] 1157. 단어 공부

링크🔗https://www.acmicpc.net/problem/1157🗒️파이썬  풀이str = input().upper()lst_str = list(set(str))lst = []for word in lst_str: lst.append(str.count(word))if lst.count(max(lst)) > 1 : print("?")else : print(lst_str[lst.index(max(lst))]) 1. 대소문자 구분을 안하고, 대문자로 출력하기 떄문에 upper 함수 사용 2. 각 문자의 개수를 파악하기 위해 집합으로 만든 후 리스트 생성 3. 집합으로 만들어진 리스트의 단어들을 통해 str 단어 개수 파악 후 리스트 append 4. 각 단어의 개수가 들어가있는 ls..