본문 바로가기

분류 전체보기

(63)
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()의 차이점은 무엇인가? 최근 백준 알고리즘과 프로그래머스를 통해 코딩 테스트(일명 코테) 준비를 위해 알고리즘 문제을 풀이하고 있다. 나..
python opencv의 cv2 에러 관련. 윈도우 OS 의 뒤에 N이 붙을 경우 먼저 '윈도우키 + R'로 실행창에 'winver'를 타이핑하여 내 윈도우 버전을 확인해본다. N 버전은 윈도우 Media Player 기능팩을 제공하지 않는다고 한다. 근데 왜 이게 문제가 되냐면 미디어 팩이 없으면 opencv 의 cv2를 구성하는 .DLL(Dynamic Link Library) 경로가 윈도우 미디어 팩에 물려있는데(추정), 이미 없는 DLL파일을 끌고 올 수 없기 때문이다. 따라서 아래의 미디어 팩을 설치하면 cv2가 물고 들어오는 windows media 패키지들을 사용할 수 있다. 그런데 그냥 N 버전이 아닌 정상 버전을 설치하는게 일반 사용자에게는 좋은 것 같다. https://support.microsoft.com/ko-kr/topic/n..
다이제스트 인증과 IP camera ptz 제어 ※이론적인 부분은 약하고, 단순 기능 구현만을 위한 내용입니다. 국내 한화 테크윈의 IP camera의 ptz 제어는 camera - POE - COM이 직접 연결되어 있을 때, 일반적인 RTSP(Real Time Streaming Protocol)로 데이터를 가져오는 제어 프로토콜의 보안과 다르다. ptz 카메라를 제어 할 목적으로 http 서버로 신호를 보내는 데, 이때 인증된 권한자(Auth)에서 SUNAPI라는 삼성테크윈 일 때 개발된? 자체 API를 이용해서 신호를 넘겨줘야 한다. 인증된 권한자로 등록하는 과정이후 SUNAPI를 이용해 카메라를 제어할 수 있는 관련 신호들을 넘겨 줄 수 있다. 나는 주로 python으로 개발을 진행중이므로 관련된 인증 코드는 다음과 같다. 간단하지만 보안관련 개..
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 | Looping with Numbers 반복문 출력 for x in {1..50..1} do echo $x done for문은 python과 같이 시작하고 {start..end..n} 으로 구성 가능하고 do 를 이용해서 출력 후 , for 끝나면 done으로 마무리.
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..