개인활동(92)
-
백준 11654번: 아스키코드
print(ord(input())) 오늘 풀어본 문제 매우 간단한 문제였다 입력받은 문자를 아스키코드로 변환하기 숏코드도 다 똑같아서 패스
2023.09.03 -
백준 9086번: 문자열
n = int(input()) strings = [str(input()) for _ in range(n)] for i in range(n): print(strings[i][0],strings[i][-1], sep='') 방금 푼 문제는 문자열 슬라이싱 문제로 첫 문자와 끝 문자를 띄어쓰기 구분 없이 출력하는 것이 목적이다. 출력할 때 한번에 처리하려고 하니 계속 generator가 튀어나와 이 부분에 대해 좀 정리해보고, 숏코드를 뜯어보려고 한다. 먼저 내가 보았던 출력값은 다음과 같았다. 뒤에는 아무래도 메모리 주소인 것 같다. (일부러 다 0으로 바꿔놓았음) 일단 generator 객체의 경우에는 입력받은 값을 가지고 있다고 한다. 그리고 호출 시 이를 하나씩 불러오는 역할을 하며 값을 불러올 때 n..
2023.09.01 -
백준 2743번: 단어 길이 재기
print(len(input())) 입력받은 문자열의 길이를 반환해주는 len 함수를 이용하는 것이 주된 문제 해결 방식이였다 다른 숏코드들도 이런 형태이다보니 숏코드 분석은 패스
2023.08.27 -
백준 27866번: 문자와 문자열
s = input() i = int(input()) print(s[i-1]) 문자열 슬라이싱의 기본 문제 쉽게 풀었었다. 숏코드도 보았는데 이렇게도 풀 수 있다니 print(input()[int(input())-1]) 한줄로 파바박 신기하다. 한줄로 어떻게 나타내면 좋을지 고민했었는데, 이런 방법이 있었다.
2023.08.27 -
백준 1546번: 평균
주어진 점수에서 최대값을 이용해 점수를 조작하여 평균을 다시 구하는 문제이다. n = int(input()) s = list(map(int, input().split())) s_max = max(s) new_s = [] while s: i, *s = s new_s.append(i/s_max*100) print(sum(new_s)/n) 기존의 데이터를 삭제하지 않는 방향이 가장 좋은 우리로서는 새로운 리스트를 만들어서 변형한 데이터를 넣어주는 것이 가장 좋다. 코드가 좀 길긴 했지만 2트만에 통과 숏코드도 한번 보고 넘어가자. n,*l=map(int,open(0).read().split()) print(sum(l)*100/max(l)/n) 나도 첫줄처럼 input을 받고 싶지만.. 이상하게도 pycharm..
2023.08.25 -
백준 10811번: 바구니 뒤집기
n, m = map(int, input().split()) list = list(range(n+1)) for i in range(m): j, k = map(int, input().split()) list[j:k+1] = reversed(list[j:k+1]) print(*list[1:]) 이 문제의 키포인트 swap 어떻게 swap하는가가 중요한 것같다. 나는 reversed를 이용하였는데, reversed는 리스트의 순서를 뒤바꿔주는 함수이다. 다른사람의 숏코드를 확인해본 결과 N,M,*l=map(int,open(0).read().split()) *A,=range(N+1) while l:i,j,*l=l;A[i:j+1]=A[j:i-1:-1] print(*A[1:]) 이렇게 swap해주었다. 다들 비슷한 ..
2023.08.24 -
백준 3052번: 나머지
rest = {(int(input()) % 42) for _ in range(10)} print(len(rest)) 이 문제는 입력받은 수를 42로 나눈 나머지들의 개수를 출력하되 중복된 값은 빼고 개수를 출력해야 한다 중복된 값을 어떻게 빼줄까 고민하던 중 set 자료형을 사용하기로 결정 set 자료형은 중복된 값은 원소로 가지지 않는다. 집합의 특징! 그래서 이를 이용해 문제를 쉽게 풀어줄 수 있었다 그렇다면 숏코드는 어떤가 보자 print(len({int(i)%42for i in open(0)})) 같은 방식을 사용했다. 딱히 뜯어볼 것은 없을 것 같아 다른 숏코드를 찾아본다. 다 비슷하다. 이런. 오늘은 여기서 끝.
2023.08.23 -
백준 5597번: 과제 안 내신 분..?
student = list(range(1, 31)) l = [map(int, input()) for _ in range(28)] print(l) for i in l: student.remove(i); print(student.sort()) 예제로 코드를 돌리면 계속 이렇게 떠서 l의 원소들을 확인해보았었다. 입력받은 각 숫자들이 들어간 것이 아닌 map object로 구성이 되어있었다. 대괄호를 이용해서 그런가 싶어서 list()로 바꾸어봐도 똑같은 결과를 가져온다. 도대체 뭘까 라고 생각하던 중 힌트가 된 글이 하나가 있다. (참고 자료: https://velog.io/@jakob1/SW%EC%82%AC%EA%B4%80%ED%95%99%EA%B5%90-%EC%A0%95%EA%B8%80-%EA%B0%9C..
2023.08.23 -
백준 10813번: 공바꾸기
n, _, *l = map(int, open(0).read().split()) L = [i+1 for i in range(n)] while l: i, j, *l = l; L[i-1], L[j-1] = L[j-1], L[i-1] print(*L) 끼얏호 여기서 중요한 것은 바로 저 뒤에 있는 L[i-1], L[j-1] = L[j-1], L[i-1] 이 부분이다. 각 위치에 있던 값들을 바꿔서 대입해줄 수 있는 방식이다. 내가 왜 틀렸었나 생각했는데 서로 값을 바꿔주어야 하는 것을 제대로 하지 못했었다. 그러면 숏코드 분석도 ㄱ 이번엔 숏코드를 좀 여러개 가져와서 비교해보고자 하였다. 제일 상단에 있는 형태와 내 코드가 점점 비슷해져가고 있어서 혹시나 다른 형태가 존재하는지도 봐야할 것 같다. n,m,*l=..
2023.08.20 -
백준 10810번: 공넣기
i = input baskets, m = map(int, i().split()) basket_list = list(0 for _ in range(baskets)) method = [[*map(int, input().split())] for _ in range(m)] for i in method: for j in range(i[0]-1, i[1]): basket_list[j] = i[2] basket_list[j] = i[2] print(*basket_list) 여기서도 unpacking을 사용하면 좀 쉽게 문제를 풀 수 있다. 저 중첩 반복문을 좀 간단하게 표현하고 싶은데, 어떻게 하면 좋을지 좀 고민을 해봤다. 근데 도저히 떠오르지 않아 바로 숏코드 분석을 하기로 결정했다. 숏코드 1등이 파이썬이라니 ..
2023.08.20