전체 글 74

백준 2870번: 수학숙제 (파이썬) _리스트 출력하기 / for-else

M = int(input())n_list = list()for i in range(M): str = input() filter = '' for j in str: if j.isdigit(): filter += j else: if filter != '': n_list.append(int(filter)) filter = '' else: if filter != '': n_list.append(int(filter))n_list.sort()print(*n_list, sep='\n') 잘 쓴 코드라고 생각하진 않지만 지난번에 어디선가 발견한 파이썬의 for-else문과 리스트를 for문 없이 출력하는 방법을 사용해봐서 기록 for-else문의 경..

백준 2024.06.21

백준 2792번: 보석상자 (파이썬)

조건 :  한 아이에게 같은 보석만을 준다  보석을 안줘도 상관이 없음찾아야 할 결과 :  가장 많은 보석을 가져간 학생이 가지고 있는 보석의 개수 알고리즘 분류 : 이분 탐색이걸 어떻게 이분 탐색으로 풀어낼 수 있나 하는 고민이 들었다 각자 가져가는 보석의 개수가 다른데 식을 어떻게 짜는 건지 알 수가 없었다.보석을 최대로 많이 가져갈 수 있는 수는 보석 리스트에서 제일 큰 수와 같으므로 max = max(보석 리스트) N,M = map(int,input().split())# 보석 담을 리스트M_list = list()for i in range(M): M_list.append(int(input()))# 정렬M_list.sort()# 한 명이 가질 수 있는 최소값, 최대값min = 1max = max(..

백준 2024.06.19

백준 1120번: 문자열 (파이썬)

단순히 문자열에서 한개씩 뽑아와서 비교하면 되는 문제인데 고려해야할 점은 A 문자열의 길이가 B보다 작을 때의 조건알파벳을 추가하지 않고 B에서 A길이만큼 뽑아오면 되지 않을까 생각했다.A, B = input().split()total = list()cnt = 0# 두 문자열의 길이가 같으면 그냥 하나씩 뽑아서 비교if len(A) == len(B): for i, j in zip(A, B): if i != j: cnt += 1 total.append(cnt) # 두 문자열의 길이가 다르다면else: # 반복회수는 두 문자열의 길이 차이 +1 만큼 for _ in range((len(B) - len(A)) + 1): cnt = 0 ..

백준 2024.06.12

백준 1817번: 짐 챙기는 숌 (파이썬)

알고리즘 분류 : 그리디 알고리즘 그리디 알고리즘이면 최선의 방법을 찾는 걸로 알고 있는데 그냥 푼 것 같은 느낌처음엔 무거운 것부터 정렬해야하나 싶었는데 그럼 무거운 것과 가벼운 것이 하나의 박스에 들어가면 어떻게 계산해야하나 머리가 안돌아갔다 그래서 그냥 차근차근 계산해보기로일단 최대로 필요한 박스는 책의 개수 N개 만큼일 테니 크기가 N인 배열을 생성해서 책의 무게를 하나씩 더해본다담을 수 있는 최대 무게 M을 넘어가면 다음 상자로 넘어가는 방식으로 진행했다. # n = 책의 개수, m = 상자의 최대 무게n,m = map(int,input().split())# 책이 0개가 이상일 때만 if n != 0: n_list = list(map(int,input().split())) # 무게를 더..

백준 2024.06.05

백준 1931번: 회의실 배정 (파이썬)

한 회의실을 겹치지 않게 쓸 수 있는 최대의 경우의 수를 출력하는 문제 제일 먼저 생각했던 건 일단 시작 시간을 기준으로 정렬일찍 시작할수록 남는 시간이 많기 때문에 시작 시간이 제일 빠른 것부터 카운트 두 번째로 고민해야하는 부분은 종료 시간인데제일 먼저 시작해놓고 제일 나중에 끝난다면 다른 사람은 회의에 참여할 수 없기 때문에끝나는 시간이 언제인지도 파악해야 한다. N = int(input())time = list()for i in range(N): # s = 회의 시작시간 , e = 회의 끝나는 시간 s,e = map(int,input().split()) time.append([s,e])# 회의 시작시간을 기준으로 한 번 정렬time.sort(key=lambda x: x[0])# 회의 끝나는 ..

백준 2024.05.29

JS : 배열

- 배열 생성하기 var li = [ 'a', 'b', 'c', 'd', 'e']; - 배열의 길이 확인하기 배열명.length; - 배열의 끝에 원소 추가하기 배열명.push( 값 ); 배열명.concat([값 여러개]); - 배열의 시작에 원소 추가하기 배열명.unshift( 값); - 배열의 특정 구간에 원소 추가 배열명.splice(특정 구간 인덱스 번호, 삭제할 원소 개수, 값); var a = ["a", "b", "c"] a.splice(1, 1, 'x', 'y'); a // ["a", "x", "y", "c"]​ - 배열에서 원소 제거하기 배열명.shift( ); // 제일 앞에 있는 데이터 제거 배열명.pop( ); // 제일 뒤에 잇는 데이터 제거 - 배열 정렬하기 배열명.sort( );..

백준 10870번: 피보나치 수열 5

알고리즘 관련 문제를 풀려고 찾아보다보면 재귀함수에 대한 이야기가 계속 나오는데 한 번도 제대로 써본 적이 없어서 풀게 된 문제 재귀함수는 함수 내에서 자기 자신을 다시 호출한다 정도로만 이해한 상태로 시작했다. 계속해서 자신을 호출하기 때문에 종료 조건이 필요하고 계산식이 있는 위치에 따라서 계산하는 값이 달라지는 것 같았다. 흐름을 따라가 보면 fi_n(3)이 입력이 되면 0보다 크므로 fi_n(3-1)이 실행이 되면서 다시 함수 첫 부분, fi_n(2)도 0보다 크므로 fi_n(2-1)이 실행이 되면서 다시 함수 첫 부분, fi_n(1)도 0보다 크므로 fi_n(1-1)이 실행 fi_n(0) 종료 조건이 충족되었고 앞에서 실행되었던 fi_n(1)에 마지막에 남아있는 print(n)실행후 fi_n(1..

백준 2023.08.08

백준 20365번: 블로그2 (파이썬)

n = int(input()) col = input() # 'B' 문자열을 모두 '-'로 바꿈 (없어도 될 듯) col_b = col.replace('B','-') # 바꾼 문자열을 기준으로 쪼개서 리스트에 담기 rr = col_b.split('-') # 위의 과정에서 공백값이 들어가서 공백값을 제거해줌 rr = list(filter(None, rr)) # 'B'를 먼저 칠하고 'R'을 칠했을 때 걸리는 작업 횟수 result_b = len(rr)+1 # 'R' 문자열을 모두 '-'로 바꿈 (없어도 될 듯) col_r = col.replace('R','-') # 바꾼 문자열을 기준으로 쪼개서 리스트에 담기 bb = col_r.strip().split('-') # 위의 과정에서 공백값이 들어가서 공백값을 ..

백준 2023.08.02

백준 1302번: 베스트 셀러 (파이썬)

처음에 틀린 이유 : 가장 많이 팔린 책이 여러개일 경우 사전 순으로 가장 앞서는 제목을 출력한다는 조건을 빼먹었다 # 2번째 시도 n = int(input()) book_list = dict() for i in range(n): book = input() if book in book_list: book_list[book] += 1 else: book_list[book] = 1 # 딕셔너리를 튜플의 형태로 빼서 책의 제목을 기준으로 오름차순 정렬 book_list = sorted(book_list.items(), key=lambda x: x[0]) # 책 제목을 기준으로 정렬된 튜플을 책의 개수로 내림차순 정렬 book_list = sorted(book_list, key=lambda x:x[1], rev..

백준 2023.08.01