만족은 하되 안주하지는 말자

기록해야 기억한다

프로그래밍 162

[python] 입력받은 문자열 개행 지우기와 그 중요성

from sys import stdin str = stdin.readline() print(str) print("hello.") readline() 을 통해 문자열을 입력받을 때의 문제점은, Enter 즉, 개행 또한 문자열에 포함되게 입력된다는 것이다. 예를 들어 "hi" 를 입력하면 결과는 이렇다. hi 가 print 되고, 한줄만큼 더 개행이 된다는걸 볼 수 있다. print() 함수의 개행 외에, 개행이 1번 더 발생하게 되는 것이다. 이런 방식에서는 문자열에는 개행이 포함되기에 문자열 길이를 계산할때도 문제가 된다! for문으로 문자열 속의 요소들을 모두 탐색한다고 할 때, 개행의 존재를 의식못하면 문제가 될 수 있다. from sys import stdin str = stdin.readline..

[python] 1254번: 팰린드롬 만들기

팰린드롬은 level, wow, 오디오 처럼 왼쪽 문자열과 오른쪽 문자열이 동일한 경우를 말한다. https://www.acmicpc.net/problem/1254 1254번: 팰린드롬 만들기 동호와 규완이는 212호에서 문자열에 대해 공부하고 있다. 규완이는 팰린드롬을 엄청나게 좋아한다. 팰린드롬이란 앞에서부터 읽으나 뒤에서부터 읽으나 같게 읽히는 문자열을 말한다. 동호는 � www.acmicpc.net 이 문제는 팰린드롬의 판별에서 그치지 않고, 팰린드롬을 만들기 위해 필요한 문자열 길이를 알아야 한다. 만약 ABCB 가 주어진다면, 이를 팰린드롬으로 만들기 위해선 ABCBA 즉 A가 추가 되어야 하므로 길이가 5가 최소다. 방법 주어진 문자열 str 이 팰린드롬인지 판별한다. if, 팰린드롬인 경우..

[python] 1138번: 한 줄로 서기

https://www.acmicpc.net/problem/1138 1138번: 한 줄로 서기 첫째 줄에 사람의 수 N이 주어진다. N은 10보다 작거나 같은 자연수이다. 둘째 줄에는 키가 1인 사람부터 차례대로 자기보다 키가 큰 사람이 왼쪽에 몇 명이 있었는지 주어진다. i번째 수는 0보다 � www.acmicpc.net 풀이 방식 1번째 사람부터 N번째 사람까지 순서대로 자리를 채워넣는 식으로 진행한다. 6 2 3 0 0 1 0 일 경우 자리는 0 0 0 0 0 0, 총 6개의 자리다. * 1번째 사람부터 계산 1: 2 -> 0 0 1 0 0 0 2: 3 -> 0 0 1 0 2 0 3: 0 -> 3 0 1 0 2 0 4: 0 -> 3 4 1 0 2 0 5: 1 -> 3 4 1 0 2 5 6: 0 -> ..

[python] 개행/줄바꿈 없이 print 하기

python 에서의 출력함수인 print() 함수는 그냥 사용하면 줄바꿈이 발생한다. print("줄바꿈 없이") print("출력하고 싶어") 그이유는 print 함수의 파라미터 중 하나인 end 의 default 가 "\n" 이기 때문. 이 때문에 내가 출력하고자하는 내용이 끝나면 맨끝에 개행이 발생한다. 그래서 end 의 인자를 적절하게 정해주면 출력의 맨 끝을 내맘대로 할 수 있다. end 에 적절한 인자를 넘겨주자 print("줄바꿈 없이",end=' ') print("출력하고 싶어",end='') 첫 째 줄의 print 에는 ' '을, 둘쨰 줄에는 ''을 넘겨주었다. 2개의 print 문의 맨 끝에는 개행이 발생하지 않는다. 또한 첫째 줄에는 ' ' 만큼의 공백을 넣었으므로 출력에도 그대로 반..

[python] 파이썬 공백 구분해 정수 입력 받기

만약 아래의 문자열 1줄을 입력받았을 때 공백으로 구분되는 정수를 오름 차순 정렬한 배열을 출력해야 한다고 하자. input 10 5 8 2 3 arr = list(map(int,input().split())) arr.sort() print(arr) output : [2, 3, 5, 8, 10] list(map(int,input().split())) 의 작동방식 input() 으로 받은 문자열을 split() 으로 공백 단위로 쪼개 리스트로 나눈다. map 을 이용해 리스트의 모든 원소에 int() 를 적용 list 로 변환해준다. 파이썬은 input() 을 쓰다가는 입력만 받다가 시간이 초과될 수 있다. import sys arr = sys.stdin.readline().restrip() 그러니 이걸 ..

[python] 파이썬 list 2차원 초기화

1차원 리스트 초기화 arr = [] for i in range(10): if i % 2 == 0: arr.append(i) print(arr) 이 방법은 구리다. 너무 길다. 그러니까 list comprehension 을 이용한다. List comprehension arr1 = [ i for i in range(10) if i % 2 == 0] print(arr1) 그렇다면 2차원 초기화는? 위의 리스트 comprehension 이용 시 매우 효과적이다. N * M 크기 2차원 행렬을 초기화하려면 m = 3 n = 3 arr2 = [ [0] * m for _ in range(n) ] print(arr2) 결과 -> [[0, 0, 0], [0, 0, 0], [0, 0, 0]] ** 특정 크기의 2차원 리..

[python] 백준 10828번: 스택 (파이썬으로 스택 구현하기)

https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 � www.acmicpc.net C++ STL 엔 stack 이 있지만, 파이썬엔 없다. 파이썬은 list 가 stack 의 역할을 할 수 있다. 정말 강력한 언어라는게 체감이 되는 문제. 또한 파이썬엔 switch/case 가 없다고 한다. 왜냐면 그냥 if/elif 가 그 역할을 다할 수 있으니까 그런 것 같다. from sys import stdin stack = [] def push(X): stack..