개인활동/코테(70)
-
백준 10773번 : 제로
10773번: 제로 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경 www.acmicpc.net 또 시간 초과다. 왜일지 전혀 감이 오지 않는다. 나랑 똑같은 형태로 코드를 작성한 사람들이 있음에도 불구하고 왜 내 코드는 시간초과가 뜨는 것일까? input으로 받아오는 것 때문에 그런걸까? n = int(input()) stack = [] for _ in range(n): num = int(input()) if num == 0: stack.pop() else: stack.append(num) print(sum(stack))
2024.02.09 -
백준 10814번 : 나이순 정렬
10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 www.acmicpc.net 이번 문제는 입력받은 나이와 이름을 가입한 순서대로, 나이 순으로 정렬하는 문제이다. 이 문제는 stable sort를 이용해야 하는 것인데, python에서 제공하는 sort, sorted 함수는 stable sort가 기본이라고 한다. 그래서 파이썬으로 이 문제를 푼다면 그냥 정렬해주어도 괜찮다는 것 n = int(input()) coor_list = [list(input().split()) for _ in range(n)] for i in range(n): coo..
2024.02.01 -
백준 11650번 : 좌표 정렬하기
11650번: 좌표 정렬하기 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net 이차원 배열을 뭔가 우선순위를 두고 정렬할 수 없을까 하며 이것저것 자료를 찾아보던 중 유레카를 외치게 되는 자료를 찾고, 드디어 이 문제를 해결했다. n = int(input()) coor_list = sorted([list(map(int, input().split())) for _ in range(n)], key=lambda x : (x[0], x[1])) for i in coor_list: print(*i..
2024.01.26 -
백준 1181번 : 단어 정렬
1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 오늘의 문제는 단어 정렬 문제이다. 이 문제의 포인트는 1. 중복 제거 2. 똑같은 길이의 단어는 알파벳 순으로 정렬 이부분에서 중복 제거의 경우 set으로 입력받으면 제거가 가능하다 정렬 또한 길이로 혹은 알파벳 순으로는 가능하나 이 둘을 어떻게섞어야 할지가 고민됐다 뭔가 lambda를 쓰면 해결할 수 있을 것 같은데 감이 오지 않았다. 그래서 구글링을 좀 해보며 얻은 결론은 n = int(input()) words = sorted(set(input..
2024.01.24 -
백준 1427번 : 소트인사이드
1427번: 소트인사이드 첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net num = sorted(list(input()), reverse=True) print(*(i for i in num), sep='') asterisk를 이용해 unpacking 후 sep='' 구분자를 이용해 공백 없이 출력하도록 한다 sorted를 이용하면 쉽게 정렬이 가능해서 bb print(*sorted(input())[::-1],sep='') 숏코드의 경우 거의 비슷했다 다만 reverse=True 옵션 대신 정렬 수 [::-1]을 이용해 내림차순으로 정렬한다 그냥 input을 받아도 자동으로 정렬을 하게 된다 신기하군~
2024.01.21 -
백준 2587번 : 대푯값
2587번: 대표값2 어떤 수들이 있을 때, 그 수들을 대표하는 값으로 가장 흔하게 쓰이는 것은 평균이다. 평균은 주어진 모든 수의 합을 수의 개수로 나눈 것이다. 예를 들어 10, 40, 30, 60, 30의 평균은 (10 + 40 + 30 + 60 + www.acmicpc.net 쉬운 문제다 어려운 문제를 풀어버릇 해야하는데 하던 일들이 좀 마무리 되면 어려운 문제들을 붙잡고 풀어봐야겠다 num_list = sorted(list(int(input()) for _ in range(5))) print(f"{int(sum(num_list) / 5)}\n{num_list[2]}") 내 코드도 설명할 부분이 딱히 없다. 입력받자마자 바로 정렬해서 num_list에 넣어주고, 평균값과 중앙값을 뽑아준다. 문제에..
2024.01.12 -
백준 2750 : 오름차순 정렬
2750번: 수 정렬하기 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 엔터로 입력받은 n개의 수를 오름차순 정렬하는 문제 굉장히 쉽다 왜냐? python에는 sort 함수가 있기 때문 n = int(input()) num_list = list(int(input()) for _ in range(n)) num_list.sort() for i in range(n): print(num_list[i]) 그래서 이 문제는 내 코드 설명보다는 숏코드 분석에 집중해보려고 한다. print(*sorted(map(int,[*open(0)][1:]))) 먼..
2024.01.12 -
10798번 : 세로읽기
10798번: 세로읽기 총 다섯줄의 입력이 주어진다. 각 줄에는 최소 1개, 최대 15개의 글자들이 빈칸 없이 연속으로 주어진다. 주어지는 글자는 영어 대문자 ‘A’부터 ‘Z’, 영어 소문자 ‘a’부터 ‘z’, 숫자 ‘0’ www.acmicpc.net 입력받은 값을 열별로 읽어와 차례대로 한줄로 출력하는 문제이다. 이때 한 행에 들어가는 데이터의 수가 최소 1개, 최대 15개이다. 이 부분을 어떻게 해결할 것인가가 가장 큰 포인트 오늘도 머리가 안돌아가 gpt의 코드 수정 서비스를 받아봤다. matrix = [] max_length = 0 # 최대 행 길이를 저장할 변수 # 입력 받으면서 최대 행 길이를 찾음 for i in range(5): row = list(map(str, input().strip(..
2024.01.06 -
2556번 : 최댓값
2566번: 최댓값 첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 위치한 행 번호와 열 번호를 빈칸을 사이에 두고 차례로 출력한다. 최댓값이 두 개 이상인 경우 그 중 한 곳의 위치를 출력한다. www.acmicpc.net 9*9 행렬을 입력받고, 이 행렬에서 최댓값과 인덱스를 찾아 출력하는 문제이다. matrix = [list(map(int, input().split())) for _ in range(9)] max_list = [] ### max값 뽑아내기 위해 각 행을 뽑아내고 max값 뽑기 for i in range(9): max_list.append(max(matrix[i])) print(max(max_list)) ### 인덱스 추출을 위해 중첩 for문 이용 for row in range(9..
2024.01.04 -
백준 2738번 : 행렬 덧셈
# 행렬의 크기 N, M 입력 N, M = map(int, input().split()) # 행렬 A 입력 matrix_A = [list(map(int, input().split())) for _ in range(N)] # 행렬 B 입력 matrix_B = [list(map(int, input().split())) for _ in range(N)] # 행렬 A와 B를 더한 결과 행렬 계산 result_matrix = [[0] * M for _ in range(N)] for i in range(N): for j in range(M): result_matrix[i][j] = matrix_A[i][j] + matrix_B[i][j] # 결과 출력 for row in result_matrix: print(' '..
2024.01.02