본문 바로가기

코드연습/Python

(9)
while 과 try, except를 적절하게 사용. while True: try: A, B = map(int, input().split()) print(A+B) except: break 무한 반복문을 구성할 때, 위와 같이 몇 개의 인자가 들어올 지 모르는 상황에서 반복문을 사용한다면? →try, except 구문으로 해결하는 방법이 있다.
for과 remove, del을 이용해서 item 삭제 시 유의할 점. N, X = map(int, input().split()) data = list(map(int, input().split())) for i, d in enumerate(data): print(i, d) if d > X: del data[i] print(data) 위와 같이 for 과 remove, del을 이용해서 item을 삭제 반복하는데, 삭제된 바로 다음 item들은 무시하고 지나가는 문제가 있었다. 문제는 단순하게 remove, del을 수행하게 되면 원본의 list의 item이 삭제 되기 때문에 그 시점의 list에서 반복이 실행되게 되므로, index가 맞지 않는 문제가 발생된다. 따라서, 위 같은 구문을 수행하려면 복사본 list를 만들고 그에 따라서 필요한 구문을 작성해야 한다. N, X ..
input() v.s. sys.stdin.readline() python BOJ 15552에서 입력값을 토대로 사칙연산을 하는 문제. 속도가 빨라야 하므로, input() 명령어를 사용하게 되면 개행문자를 삭제하고 돌아오는 과정에서 시간이 readline() 대비 약간 느리다. 관련 문제는 내장함수인 input()을 사용하는 것 보다, 속도 측면에서 sys의 stdin.readline()을 사용하는 것이 빠르게 처리할 수 있다. 대신 \n 개행문자를 제거 할 필요가 있으므로, 참고 해야한다. https://blog.sungmin.dev/102 [Python] 파이썬에서 사용하는 input()과 sys.stdin.readline()의 차이점은 무엇인가? 최근 백준 알고리즘과 프로그래머스를 통해 코딩 테스트(일명 코테) 준비를 위해 알고리즘 문제을 풀이하고 있다. 나..
HackerRank | Day 8: Dictionaries and Maps Key-Value pair mappings using a Map or Dictionary data structure #Sample Input 3 sam 99912222 tom 11122222 harry 12299933 sam edward harry #Sample Output sam=99912222 Not found harry=12299933 1. Dictionary(사전) 타입을 이용해서 key-value 쌍으로 구성된 데이터를 구축 2. 출력하는 문제이다. n = int(input()) dict_list = {} for i in range(n): name, num = input().split() dict_list[name] = num while True: try: name = input() if nam..
HackerRank | Capitalize! 첫 문자를 영어 대문자로 만드는 방법이다. (별 희한한 문제가 다있다.) 물론 이것도 string 내장 함수인 capitalize라고 하는 것을 쓰면 쉽게 구현가능하다. #!/bin/python3 import math import os import random import re import sys # Complete the solve function below. def solve(s): return ' '.join(map(str.capitalize, s.split(' '))) if __name__ == '__main__': fptr = open(os.environ['OUTPUT_PATH'], 'w') s = input() result = solve(s) fptr.write(result + '\n') fp..
HackerRank | Alphabet Rangoli string 나열을 하는 방법. #size 3 ----c---- --c-b-c-- c-b-a-b-c --c-b-c-- ----c---- #size 5 --------e-------- ------e-d-e------ ----e-d-c-d-e---- --e-d-c-b-c-d-e-- e-d-c-b-a-b-c-d-e --e-d-c-b-c-d-e-- ----e-d-c-d-e---- ------e-d-e------ --------e-------- 위와 같은 알파벳 스트링 배열을 만들고 출력하는 문제. 쉬워보이나, 굉장히 많은 반복 테스트가 필요한 문제였다. import string def print_rangoli(size): # your code goes here alpha = string.ascii_lowerca..
HackerRank | Text Alignment 문자 배열 출력, 정돈된 형식으로 출력하거나, 굳이 배열을 짜서 출력 할 필요까지는 없을 때 유용할 듯. 개인적으로는 GUI에서 굳이 위치를 맞추기 위해 좌표를 구상하거나 크기를 잡을 필요가 없을 것 같아 유용해 보인다. #Replace all ______ with rjust, ljust or center. thickness = int(input()) #This must be an odd number c = 'H' #Top Cone for i in range(thickness): print((c*i).rjust(thickness-1)+c+(c*i).ljust(thickness-1)) #Top Pillars for i in range(thickness+1): print((c*thickness).center..
HackerRank | String Formatting 숫자나 문자를 주로 다루는 데서 필요한 String Formatting 방식 정리. 깔끔하게 정리된 print 구문을 보고 싶을 때 필요할 듯. 일상에서는 굳이 많이 쓰이지는 않을 듯. def print_formatted(number): # your code goes here l1 = len(str(bin(n))[2:]) for i in range(1,n+1,1): print(str(i).rjust(l1,' '),end=" ") print(oct(i)[2:].rjust(l1,' '),end=" ") print(((hex(i)[2:]).upper()).rjust(l1,' '),end=" ") print(bin(i)[2:].rjust(l1,' '),end=" ") print("") if __name__ ==..