전체 글 208

2021.08 TIL

08.02 https://joylee-developer.tistory.com/61 백준 - 2908번 / python slicing https://www.acmicpc.net/problem/2908 2908번: 상수 상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문 joylee-developer.tistory.com https://joylee-developer.tistory.com/62 백준 - 5622번 / find(), index(), list comprehension https://www.acmicpc.net/problem/5622 5622번: 다이얼 첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다..

TIL 2021.08.03

백준 - 1011번

Fly me to the Alpha Centauri https://www.acmicpc.net/problem/1011 1011번: Fly me to the Alpha Centauri 우현이는 어린 시절, 지구 외의 다른 행성에서도 인류들이 살아갈 수 있는 미래가 오리라 믿었다. 그리고 그가 지구라는 세상에 발을 내려 놓은 지 23년이 지난 지금, 세계 최연소 ASNA 우주 비행 www.acmicpc.net 이동 거리가 계속 변하는 경우라서 어떻게 계산해야 될지 고민했다. 마지막 Y지점에 도착할 때 바로 직전의 이동거리는 1광년이 되어야 한다. 그러기 위해서는 그 전에는 2광년, 또 그 전에는 3광년으로 순차적으로 줄어들어야 한다. 가장 적은 횟수로 이동하기 위해서는 최대로 많이 움직일 수 있는 거리인 k..

알고리즘 2021.08.03

백준 - 2775번 / 함수의 호출 횟수(counter)

부녀회장이 될테야 https://www.acmicpc.net/problem/2775 2775번: 부녀회장이 될테야 첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 정수 k, 두 번째 줄에 정수 n이 주어진다 www.acmicpc.net 처음엔 재귀함수로 문제를 해결하려고 했다. 1 2 3 4 5 6 7 8 9 10 11 12 def resident(k, n): if k == 0: return n total = 0 for i in range(1, n+1): total += resident(k-1, i) return total T = int(input()) for _ in range(T): k = int(input()) n = int(input()) pr..

알고리즘 2021.08.03

백준 - 10250번

ACM 호텔 https://www.acmicpc.net/problem/10250 10250번: ACM 호텔 프로그램은 표준 입력에서 입력 데이터를 받는다. 프로그램의 입력은 T 개의 테스트 데이터로 이루어져 있는데 T 는 입력의 맨 첫 줄에 주어진다. 각 테스트 데이터는 한 행으로서 H, W, N, 세 정수 www.acmicpc.net 손님들이 방을 선호하는 기준은 1. 엘리베이터로부터의 거리 2. 층수 이므로 엘리베이터에서 가까운 방부터 배정한다. 1호들부터 101호, 201호, 301호... H01호까지 배정한 후 102호, 202호, 302호... H02호까지 배정한다. 그러므로 객실 배정은 H(호텔의 층 수)와 관련되어있다. H=4, W=4인 호텔에 손님들을 순서대로 배정할경우 다음과 같다. 1번..

알고리즘 2021.08.03

백준 - 2869번

달팽이는 올라가고 싶다 https://www.acmicpc.net/problem/2869 2869번: 달팽이는 올라가고 싶다 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B V에 도달했는지 확인 -> 못미쳤으면 B만큼 내려갔다가 다시 A만큼 올라감 -> V만큼 올라갔는지 확인 을 반복하면 가능하지만 이 문제의 경우, V의 값이 매우 큰 수(1,000,000,000)가 가능하고, 0.15초의 시간제한이 있다. 어떻게 하면 더 빨리 계산이 가능한지 고민했다. 내가 작성한 코드 1 2 3 4 5 6 A, B, V = map(int, input().sp..

알고리즘 2021.08.03

백준 - 1316번

그룹단어체커 https://www.acmicpc.net/problem/1316 1316번: 그룹 단어 체커 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때 www.acmicpc.net 내가 작성한 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 def list_overlap_del(input_list): result_list = [] result_list.append(input_list[0]) for i in range(len(input_list)): if result_list[-1] != ..

알고리즘 2021.08.03

백준 - 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