Algorithm

    백준#1417 국회의원 선거 in Python

    1417번: 국회의원 선거 첫째 줄에 후보의 수 N이 주어진다. 둘째 줄부터 차례대로 기호 1번을 찍으려고 하는 사람의 수, 기호 2번을 찍으려고 하는 수, 이렇게 총 N개의 줄에 걸쳐 입력이 들어온다. N은 50보다 작거나 같 www.acmicpc.net 이 문제를 풀기 위한 자료구조로 우선순위 큐가 적합하다는 것을 깨닫는 순간 빠르게 풀리는 문제다. 필자는 그걸 깨닫지 못해 여러 시행착오와 반례 선정을 거쳐 꽤 오랜 시간이 걸렸다... 후보가 1명일 경우, 바로 0을 프린트하고 종료한다. 후보가 2명 이상일 경우, 0번 인덱스(1번 후보)의 값을 target 변수에 저장해 따로 떼어두었다. └ 이 자체가 필수적인 의미를 갖지는 않지만, 메모리를 고려하지 않는 내 작은 코드에서는 이 라인을 없애는 순간..

    백준#2075 N번째 큰 수 in Python

    2075번: N번째 큰 수 첫째 줄에 N(1 ≤ N ≤ 1,500)이 주어진다. 다음 N개의 줄에는 각 줄마다 N개의 수가 주어진다. 표에 적힌 수는 -10억보다 크거나 같고, 10억보다 작거나 같은 정수이다. www.acmicpc.net 이 문제의 핵심은 입력으로 주어지는 수를 모두 배열에 때려 박아서 정렬하는 것보다 더 효율적인 방법이 무엇인지 고민하는 것이다. 여기서, 'N번째 큰 수'란, 'N개의 수들 중 가장 작은 수'라는 것을 깨닫고 나면 문제가 쉽게 풀린다. 문제 예시처럼 N=5라고 가정할 때, 최대 크기가 5인 리스트를 만들었다. └ 크기가 5보다 작으면 일단 숫자를 넣고, 그 외의 경우에는 (크기가 5인 경우) 다음 행위를 실행한다. 리스트의 크기가 5일 때 새로운 숫자를 만나면 최소값과..

    [알고리즘 공부] 순환 Recursion

    순환Recursion이란? '순환'이란 자기 자신을 호출하는 함수를 뜻합니다. 아래처럼요. void func(...){ ... func(...); ... } 어떤 함수가 자기 자신을 다시 호출한다면, 당연히도, 한 번 그 함수가 실행되면 무한 루프에 빠지겠죠. 예를 들어 "Hello, World!"를 출력하는 함수를 작성하고 프린트문 뒤에 그 함수를 또 호출한다면, "Hello, World!"만 끝없이 출력될겁니다. def prtHello(): print("Hello, World!") prtHello() if __name__ == "__main__": prtHello() // 출력 Hello, World! Hello, World! Hello, World! Hello, World! Hello, World!..

    programmers 가운데 글자 가져오기, 두 정수 사이의 합

    programmers 가운데 글자 가져오기, 두 정수 사이의 합

    가운데 글자 가져오기 def solution(s): answer = s[int((len(s) - 1) / 2)] if len(s) % 2 == 1 else s[int(len(s) / 2 - 1)] + s[int(len(s) / 2)] return answer 두 정수 사이의 합 def solution(a, b): sum = 0 if a > b: a, b = b, a for i in range(a, b+1): sum += i return sum

    goorm 2진수의 1 개수, 범위 내의 약수

    goorm 2진수의 1 개수, 범위 내의 약수

    2진수의 1 개수 # -*- coding: utf-8 -*- # UTF-8 encoding when using korean n = bin(int(input())) blist =[] cnt = 0 for i in range(2, len(n)): if(n[i] == '1'): cnt += 1 print(cnt) 범위 내의 약수 # -*- coding: utf-8 -*- # UTF-8 encoding when using korean a, n, m = map(int, input().split(' ')) ans = 0 for j in range(n, m+1): cnt = 0 for k in range(1, j+1): if(j % k == 0): cnt += 1 if(cnt == a): ans += 1 print(..

    programmers level 1: 이상한 문자 만들기

    programmers level 1: 이상한 문자 만들기

    # -*- coding: utf-8 -*- # UTF-8 encoding when using korean def solution(s): word = s.split(' ') ans = [] for i in word: new = '' for j in range(len(i)): if(j % 2 == 0): new += i[j].upper() elif(j % 2 == 1): new += i[j].lower() ans.append(new) return print(" ".join(ans)) if __name__ == "__main__": s = input() solution(s)

    programmers level 1: 시저 암호

    programmers level 1: 시저 암호

    def solution(s, n): s = list(s) for i in range(len(s)): if(s[i].isupper()): s[i] = chr((ord(s[i]) - ord('A') +n) % 26 + ord('A')) elif(s[i].islower()): s[i] = chr((ord(s[i]) - ord('a') +n) % 26 + ord('a')) return "".join(s)

    goorm 소수 판별, 고장난 컴퓨터, 하노이의 탑

    goorm 소수 판별, 고장난 컴퓨터, 하노이의 탑

    소수 판별 # -*- coding: utf-8 -*- # UTF-8 encoding when using korean n = int(input()) sw = 0 for i in range(2, n): if(n % i == 0): sw += 1 if(sw == 0): print("True") else: print("False") 고장난 컴퓨터 # -*- coding: utf-8 -*- # UTF-8 encoding when using korean n, tick = map(int, input().split(' ')) num = input().split(' ') cnt = 0 for i in range(0, n-1): if((int(num[i+1]) - int(num[i])) > tick): cnt = 0 el..

    goorm 재원 넘버, 부모 단어, 피자 쿠폰

    goorm 재원 넘버, 부모 단어, 피자 쿠폰

    재원 넘버 # -*- coding: utf-8 -*- # UTF-8 encoding when using korean n = int(input()) cnt = 0 for i in range(1, n+1): cnt += 3 ** i print(cnt) 부모 단어 # -*- coding: utf-8 -*- # UTF-8 encoding when using korean n,m = input().split(' ') parent = [i for i in n] qst = [j for j in m] sw = 0 for k in range(len(qst)): if qst[k] not in parent: sw = 1 if(sw==0): print("YES") else: print("NO") 피자 쿠폰 #include us..

    goorm 가위바위보, 홀수 놀이, 멀티탭 사용

    goorm 가위바위보, 홀수 놀이, 멀티탭 사용

    가위바위보 # -*- coding: utf-8 -*- # UTF-8 encoding when using korean s = input().split(' ') x = 0 #가위 o = 0 #주먹 q = 0 #보 for i in range(5): if(s[i]=='1'): x += 1 elif(s[i]=='2'): o += 1 elif(s[i]=='3'): q += 1 if(x==0 and o!=0 and q!=0): print(q) elif(x!=0 and o==0 and q!=0): print(x) elif(x!=0 and o!=0 and q==0): print(o) else: print(0) 홀수 놀이 #include #include using namespace std; int main() { int ..

    goorm 문자열 번갈아 출력하기, 벡터의 +, - 연산, 구구단+

    goorm 문자열 번갈아 출력하기, 벡터의 +, - 연산, 구구단+

    문자열 번갈아 출력하기 # -*- coding: utf-8 -*- # UTF-8 encoding when using korean s = input() l = len(s) if(l%2==0): frt = s[0:int(l/2):1] lst = s[l-1:int(l/2)-1:-1] else: frt = s[0:int(l/2)+1:1] lst = s[l-1:int(l/2):-1] i = 0 while(1): if(i+1>len(frt)): break print(frt[i], end='') if(i+1>len(lst)): break print(lst[i], end='') i += 1 벡터의 +, - 연산 # -*- coding: utf-8 -*- # UTF-8 encoding when using korean x..

    goorm 최댓값, 전기요금, 등차 또는 등비 수열

    goorm 최댓값, 전기요금, 등차 또는 등비 수열

    최댓값 # -*- coding: utf-8 -*- # UTF-8 encoding when using korean n = int(input()) a = input().split(' ') max = int(a[0]) idx = 0 for i in range(n): if(int(a[i])>max): max = int(a[i]) idx = i print(max, idx+1) 전기요금 # -*- coding: utf-8 -*- # UTF-8 encoding when using korean n = int(input()) if(nn3>>n4; if(n2*2==n1+n3 && n3*2 == n2+n4){ int d = n2 - n1; cout