알고리즘 50

백준 - 2941번 / replace()

크로아티아 알파벳 변환 https://www.acmicpc.net/problem/2941 2941번: 크로아티아 알파벳 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= www.acmicpc.net 내가 작성한 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 string = input() cro_2 = ["c=", "c-", "d-", "lj", "nj", "s=", "z="] cro_3 = "dz=" length = 0 while len(string) > 0: length += 1 if string[:3..

알고리즘 2021.08.02

백준 - 5622번 / find(), index(), list comprehension

https://www.acmicpc.net/problem/5622 5622번: 다이얼 첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어의 길이는 2보다 크거나 같고, 15보다 작거나 같다. www.acmicpc.net 내가 작성한 코드 1 2 3 4 5 6 7 8 9 dial = [['A', 'B', 'C'], ['D', 'E', 'F'], ['G', 'H', 'I'], ['J', 'K', 'L'], ['M', 'N', 'O'], ['P', 'Q', 'R', 'S'], ['T', 'U', 'V'], ['W', 'X', 'Y', 'Z']] string = input() time = 0 for s in string: for i, d in enumerate(dial): if s in d: time +..

알고리즘 2021.08.02

백준 - 2908번 / python slicing

https://www.acmicpc.net/problem/2908 2908번: 상수 상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두 www.acmicpc.net 처음 작성한 코드 1 2 3 4 5 6 7 8 9 10 11 a, b = input().split() a_list = list(a) b_list = list(b) a_list.reverse() b_list.reverse() a_new = int(''.join(a_list)) b_new = int(''.join(b_list)) if a_new > b_new: print(a_new) else: print(b_ne..

알고리즘 2021.08.02

백준 - 10809번 / 아스키코드, enumerate()

아스키코드 컴퓨터는 문자를 0과 1의 배열로 기억한다. 그렇기 때문에 문자 숫자로 변환하는 여러 가지 방식이 있는데 아스키코드도 그중 하나이다. 통상적으로 많이 사용되며, 0번~127번까지 사용가능하다. 가끔 아스키코드를 사용해야할 일이 생기는데 A : 65, a : 97 만 기억하면 대부분 해결 가능하다. 코딩을 할 수 있으면 굳이 외울 필요가 없다. 문자형으로 저장된 변수를 정수형으로 출력하면 아스키코드 값을 구할 수 있다. C언어의 경우 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #include int main(void) { // 숫자 -> 문자 int num; printf("숫자를 입력하시오: "); scanf("%d", &num); printf("문자 = %c\n..

알고리즘 2021.07.28

백준 - 함수

set 자료형(집합 자료형) 중복을 허용하지 않는다. 순서가 없다. 첫 번째 특징을 이용해서 중복을 제거하는데 사용했다. 예시 1. 백준 1065번 문제 / 한수 찾기 - https://www.acmicpc.net/problem/1065 1065번: 한수 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 www.acmicpc.net 각 자리가 등차수열인지 구하려면 각 자리수들의 차이를 구하고, 그 차이가 모두 동일한지 확인해야 한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 def arithmetic(n): # 10 이하의 수..

알고리즘 2021.07.27

백준 - 1차원 배열

여러가지 값을 받아 1차원 배열을 만드는 방법 아래에서는 숫자를 입력받기 때문에 int를 사용했지만 문자를 입력받는다면 필요없다. 1. for을 이용해 하나씩 받아 배열에 추가하는 방법 1 2 3 data = [] for i in range(9): data.append(int(input())) cs 9개의 수를 입력받아 data라는 list에 넣는다. (줄바꿈으로 다른 수를 구분해서 입력하는 경우) 2. list에 map을 활용하는 방법 1 2 import sys score = list(map(int, sys.stdin.readline().split())) cs 입력받은 값들을 int형으로 바꾼 후 list에 저장한다 (공백으로 다른 수를 구분해서 넣는 경우) 백준 4344번 문제 - https://ww..

알고리즘 2021.07.26

백준 - while문

while 조건문: 참일 경우 실행될 문장 1 참일 경우 실행될 문장 2 참일 경우 실행될 문장 3 while은 조건문이 참일 경우 아래의 문장이 실행된다. 문장을 다 실행하고 나면 다시 조건문을 확인한다. while문을 멈추는 방법 while의 조건문이 false가 되는 경우 while문 내에서 break를 만나는 경우 백준 10952번 문제 - https://www.acmicpc.net/problem/10952 10952번: A+B - 5 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 1 2 3 4 5 6 7 import sys while True: try: a, b = map(int, sys.stdin.readline().split()) e..

알고리즘 2021.07.20

백준 - for문

파이썬 입력받기 input() sys.stdin.readline() for 반복문으로 여러 케이스를 입력받아 실행하는 경우, input()을 통해 값을 입력받으면 시간초과가 날 수있다. 그래서 여러 줄을 입력받을 땐 sys.stdin.readline()을 사용하는걸 권장한다고 한다. 백준 15552번 문제 - https://www.acmicpc.net/problem/15552 15552번: 빠른 A+B 첫 줄에 테스트케이스의 개수 T가 주어진다. T는 최대 1,000,000이다. 다음 T줄에는 각각 두 정수 A와 B가 주어진다. A와 B는 1 이상, 1,000 이하이다. www.acmicpc.net 내가 작성한 코드 1 2 3 4 5 6 import sys a = int(sys.stdin.readline..

알고리즘 2021.07.20

백준 - if문

if 조건이 참일 때 실행할 문장들을 정의한다. if 조건: 참일 경우 실행할 문장 1 참일 경우 실행할 문장 2 참일 경우 실행할 문장 3 복잡한 조건으로 if문을 만들 수 있다. if 조건1: 조건1이 참일 경우 실행할 문장 1 조건1이 참일 경우 실행할 문장 2 조건1이 참일 경우 실행할 문장 3 elif 조건2: 조건2가 참일 경우 실행할 문장 1 조건2가 참일 경우 실행할 문장 2 조건2가 참일 경우 실행할 문장 3 elif 조건3: elif 조건4: ...(원하는 만큼 생성 가능) else: 위의 조건들을 모두 만족하지 않을 경우 실행할 문장 1 위의 조건들을 모두 만족하지 않을 경우 실행할 문장 2 위의 조건들을 모두 만족하지 않을 경우 실행할 문장 3 elif와 else는 모두 생략 가능하..

알고리즘 2021.07.16

백준 - 입출력과 사칙연산

python으로 알고리즘 공부를 시작함. 출력 print() 파이썬의 print의 경우, 자동으로 줄바꿈이 되며 변수도 바로 사용할 수 있어서 편하다. 입력 input() input안에 메시지를 넣으면 코드를 실행했을 때 메시지가 먼저 나타나고 그 옆에 입력을 받을 수 있도록 커서가 깜빡인다. input().split(구분문자) 한 줄 입력을 받을 때 구분문자로 나눠서 문자로 이뤄진 리스트를 입력받는다. 1 2 3 4 arr = input().split() # 1 3 5 입력 후 엔터 print(arr) # ['1', '3', '5'] cs a, b, c = input().split() 여러 문자를 각각의 변수에 입력할 수 있다. 1 2 3 4 a, b, c = input().split() # 1 3 5..

알고리즘 2021.07.15