사전(Dictionary) 자료형 매번 딕셔너리 만들 때, 자꾸 버벅거리길래 기록용 import sys input = sys.stdin.readline n = int(input()) lst = list(map(int, input().split())) # Key Value 이렇게 설정 for i in lst: if i in answer: answer[i] += 1 else: answer[i] = 1 [3. 람다식] 이용하여 Keys, Values 정렬 출력 가능 정수(Integer)형 출력 정수+문자 같이 출력할 때 num1, num2 = 5, -10 print("%d와 %d는 다르다" %(num1, num2)) # % 사용 print(f"{num1}와 {num2}는 다르다") # f문자열 print(fo..
유클리드 호제법 유클리드 호제법은 두 수의 최대공약수를 구하는 알고리즘이다. 이 알고리즘은 두 수를 나눈 나머지를 이용해 최대공약수를 구하는 방법이다. 먼저, 큰 수를 작은 수로 나눈 나머지를 구하고, 작은 수를 이전에 구한 나머지로 나눈 나머지를 구한다. 이 과정을 나머지가 0이 될 때까지 반복하다 마지막으로 구한 나머지가 최대공약수가 된다. 조금 더 구체적으로 예를 들자면 49와 21가 있다고 생각해보자 49를 21로 나누어 떨어지지 않으니까 49를 21로 나눈 나머지 값은 7이다. 21을 7로 나누면 나누어 떨어진다.(나머지가 0이 될 때까지 반복한다는 것이 이 뜻) 즉 7이 최대공약수가 되는 것 아래 백준 문제를 풀다가 보게 된 수학공식? 알고리즘? 인데 코드로는 아래처럼 볼 수 있다. [백준] ..
브루트 포스 브루트 포스(brute force), 키 전수조사(exhaustive key search) 또는 무차별 대입(無差別代入)은 조합 가능한 모든 문자열을 하나씩 대입해 보는 방식으로 암호를 해독하는 방법이다. 흔히 암호학에서 연구되나, 다른 알고리즘 분야에서도 사용되고 있다. 문제를 풀다가 리스트, 문자열 다른 방법보다 그냥 하나씩 세는게 더 빠르고 간단할 때 사용 사실 난생 처음 들어보는 단어라서 기록했다. + 추가 문자열에서 패턴 매칭이 어떤 문자열(target) 내부에 다른 문자열(pattern)이 존재하는지를 검증하는 과정을 표현하는 것인데, 이때 존재하는지 찾고자 하는 문자열을 패턴이라고 부른다. 문자열에서의 브루스 포트는 가장 기본적인 방법으로 문자열을 비교해가며 패턴 매칭을 하는 방..
[백준] 10951번 A+B - 4 문제 내용 자체는 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. 라는 문제인데 몇 번 입력받을 것인지 주어지지 않았다. 그래서 알아서 입력이 멈추면 정지해야 하는데 솔직히 어떻게 할 지 몰랐다. 찾아본 결과 try except를 사용하는 것 같아서 정리해보려고 한다. try except while True: try: A, B = map(int, input().split()) print(A+B) except: break # try: A, B에 int형이 들어가면 A+B 출력 # except: try에 대한 에러 발생 시 break # while이 가장 큰 범위이기 때문에 에러가 생기면 반복이 멈춘다. while과 try except whil..