개인활동(107)
-
백준 5622번: 다이얼
s = [*map(str, input())] sec = 0 for i in s: if i == 'A' or i == 'B' or i == 'C': sec += 3 elif i == 'D' or i == 'E' or i == 'F': sec += 4 elif i == 'G' or i == 'H' or i == 'I': sec += 5 elif i == 'J' or i == 'K' or i == 'L': sec += 6 elif i == 'M' or i == 'N' or i == 'O': sec += 7 elif i == 'P' or i == 'Q' or i == 'R' or i == 'S': sec += 8 elif i == 'T' or i == 'U' or i == 'V': sec += 9 elif i ..
2023.09.07 -
백준 2908번: 상수
a, b = input().split() a = a[::-1] b = b[::-1] if int(a) > int(b): print(a) else: print(b) 상수를 뒤바꿔서 크기를 비교해보는 문제이다 reversed를 이용하려고 했지만 reversed는 리스트에서 사용할 수 있는 함수이기에 다른 방식을 이용했다 일단 [::-1]의 의미는 처음부터 끝까지 볼 것이지만 step은 왼쪽에서 오른쪽이 아닌 오른쪽에서 왼쪽으로 보겠다는 의미이다 1학년때 이 슬라이싱 방법을 제대로 이해 못해서 애먹었던 기억이 있었는데, 이렇게 사용하다니 그리고 숏코드를 보고 충격먹었다. print(max(input()[::-1].split())) 이렇게 한줄로 표현할 수 있다는 사실이 굉장히 신기하다.
2023.09.06 -
백준 1152번: 단어의 개수
s = [*map(str, input().split())] print(len(s)) 단어를 입력받아 갯수를 출력하는 문제 왜인지 모르겠으나 이렇게 풀었는데 아래와 같은 숏코드로 풀면 되었는데 왜 나는 저렇게 풀었는가 입력받은 데이터 저장하고 출력하는건 나쁘지 않은 것 같다. 어떻게 이용될지 모르니! print(len(input().split()))
2023.09.06 -
백준 2657번: 문자열 반복
t = int(input()) for i in range(t): r, s = map(str, input().split()) new_s = [s[i]*int(r) for i in range(len(s))] print(*new_s, sep='') 입력받은 수만큼 문자를 여러번 출력하는 문제 오랜만에 문제를 푸니 코드를 적당히 줄이는 것이 또 어려워졌다. 오늘도 숏코드 뜯어보기 for r,_,*s,_ in[*open(0)][1:]:print(''.join(c*int(r)for c in s)) 먼저 open에서 입력받은 것 중 처음에 횟수는 생략, 문자를 반복할 횟수를 받고 띄어쓰기는 따로 변수 설정을 하지 않고, 문자열을 입력받았다. 문자열도 for c in s를 해도 하나하나 꺼내볼 수 있군요 빈 문자열에 ..
2023.09.05 -
백준 11720번: 숫자의 합
n = int(input()); num = input(); sum = 0 for i in range(n): sum += int(num[i]) print(sum) 띄어쓰기 없이 입력된 값을 분리하여 하나하나 더해주는 것이 목표인 이 문제에서는 문자열 슬라이싱을 잘 이용하는지를 확인하는 문제라고 볼 수 있다. 나는 슬라이싱을 해서 하나하나 더해주는 방법을 이용했다. 그리고 숏코드를 보았는데 좀 충격적이였다 input() print(sum(map(int,input()))) map 함수를 이용해 입력받은 것이 알아서 분리가 되는 듯 하다. 이에 대해 자세히 설명해주실 수 있는 분 있으면 부탁드립니다. 대충 이해는 되지만 a little bit 뭔가 부연설명이 더 필요한데 어떻게 서치해야할지 모르겠다.. 그럼 이만
2023.09.03 -
백준 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