목록프로그래밍/Python (9)
CHIqueen
재미있는 문제 import shutil import os xflag = "tjctf{n0t_th3_fl4g}\n" open("0.txt","w").write(xflag) cwd = os.getcwd() j=0 while (flag:=open(str(j)+".txt").read()) == xflag: j+=1 for i in os.listdir(): if i.endswith("kz3"): os.rename(i,str(j)+".zip") i=str(j)+".zip" if i.startswith(str(j)): shutil.unpack_archive(i) break for k in os.listdir(cwd+"\\"+str(j)): shutil.move(cwd+"\\"+str(j)+"\\"+k,cwd+"\\"..
https://programmers.co.kr/learn/courses/30/lessons/42577 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 처음에 풀때는 문자열의 접두어니까 startwith쓰면 되겠거니 해서 풀었다. def solution(phone_book): phone_book.sort() for num1, num2 in zip(phone_book, phone_book[1:]): if num2.startswith(num1): return False return True 하지만 이 문제의 분류는 해시 그러니까 해시로도 풀어보았다. def so..
https://www.laurentluce.com/posts/python-dictionary-implementation/ Python dictionary implementation | Laurent Luce's Blog August 29, 2011 This post describes how dictionaries are implemented in the Python language. Dictionaries are indexed by keys and they can be seen as associative arrays. Let’s add 3 key/value pairs to a dictionary: >>> d = {'a': 1, 'b': 2} >>> d['c'] = 3 > www.laurentluce.co..
그냥 base64 decode 계속 돌려주면된다. import base64 a=open("ciphertext2","r").read() for i in range(100): a = base64.b64decode(a) print(a[:10]) 돌리다가 에러 터지는데 그때 a를 출력해보면 flag가 나온다, UMDCTF-{b@se64_15_my_f@v0r1t3_b@s3}
https://wiki.python.org/moin/TimeComplexity TimeComplexity - Python Wiki This page documents the time-complexity (aka "Big O" or "Big Oh") of various operations in current CPython. Other Python implementations (or older or still-under development versions of CPython) may have slightly different performance characteristics. Howe wiki.python.org https://www.ics.uci.edu/~pattis/ICS-33/lectures/comp..
https://www.acmicpc.net/problem/4344 4344번: 평균은 넘겠지 문제 대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다. 입력 첫째 줄에는 테스트 케이스의 개수 C가 주어진다. 둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고, 이어서 N명의 점수가 주어진다. 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다. 출력 각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자 www.acmicpc.net [print("{:.3f}%".format(sum([1 for j in i[1:] if j>sum(i[1:])/i[0]])/i[0]..
#오늘의 시간낭비 파이썬 오픈카톡방에 질문으로 "딕셔너리의 모든 값에 +1하는 좋은 방법이 있을까요? 반복문으로 모든 원소에 접근해야만 하나요?" 가 올라왔다. list는 한줄로 list(map(lambda x:x+1,a)) 으로 가능하지만 막상 dict는 한줄로 떠오르지 않았다. for문으로는 간단하게 for i in c: c[i]+=1 매우 간단하게 2줄로 끝나지만 이대로 끝내면 재미없다. 파이썬은 사기이기 때문에 한줄로 끝내보려 한다. dict(zip(a.keys(),map(lambda x:x[1]+1,a.items()))) 다른 방법으론 dict(zip(a.keys(),map(lambda x:a.get(x)+1,a.keys()))) 이것도 있는데 for코드가 빠를거 같다. 생각한 김에 테스트해보자..
스캐너 지잉지잉 너무 오래걸리고 귀찮아서 캠뭐시기 어플을 애용하고 있다. 하지만 pdf로 변환하고 나면 밑에 있는 scan by ~ 가 다른 사람한테 전달할때 좀 그래서 전에 질문을 받은적이 있다.... 그래서 이걸 없애 보려는데 다행히 스캔한거 위에 올려서 아예 이미지로 만들지 않아서 이미지랑 분리 할 수 있다. 라이브러리는 os, PyPDF2, img2pdf, PIL을 사용할 것이다. (하나로 처리하면 좋지만 자료랑 doc이 너무 구리다) import os import PyPDF2 from img2pdf import convert from PIL import Image file_pdf = PyPDF2.PdfFileReader(open("test.pdf","rb")) pages = file_pdf.ge..
오늘 필기 공부를 위해 기출문제를 다운 받고 인쇄 하려고 봤더니 대략 100개 정도의 한글파일이 나왔다. 인쇄하기 편하기 위해 pdf로 바꾸려고 파일 하나하나 몇번씩 클릭해서 pdf로 바꾸려니 개발 공부해서 어디 엿 바꿔 먹었나 생각이 들어서 바로 hwp를 pdf로 바꾸는 방법을 찾아보다가 https://www.youtube.com/watch?v=5aobDyMFWHo 이 영상을 보게 되었다. 하지만 지금 api가 바뀌어서 그런지 HAction과 HParameterSet이 안보여서 새로 찾다가 방법을 찾아 오랜만에 이 글을 쓰게 되었다. 코드를 먼저 보자 import os import win32com.client as win32 import win32gui BASE_DIR = "C:\\Users\\CHIq..