공부/알고리즘
-
[BAEK JOON] 2965. 캥거루 세마리 (Python)공부/알고리즘 2024. 5. 20. 17:11
문제링크 제출코드a,b,c = map(int, input().split())print(max(b-a-1,c-b-1)) 처음에 문제의 말을 이해를 잘 못해서 캥거루가 그럼 왼쪽에서만 움직이는 값을 계산하면 되지않나?라는 이상한 포인트로 접근해 문제를 잘 못 풀었다. 이 문제의 제일 중요한 핵심은 캥거루가 "최대" 몇 번 움직일 수 있냐는게 포인트다. 0~100이라는 수직선 좌표 위에 캥거루가 3마리 있을 때 바깥쪽이라는 말은 왼쪽, 오른쪽 관계 없이 두 캥거루 중 한마리가 다른 두 캥거루 사이의 정수 좌표로 점프 할 수 있다.따라서 왼쪽으로 갔을 때 더 많이 움직일지, 오른쪽으로 갔을 때 더 많이 움직이는지 값을 계산해보고 B-A (왼쪽), C-B(오른쪽) 같은 형태로 계산하면 된다. 단 -1을 하는 이..
-
[BAEK JOON] 2145. 숫자놀이 (Python)공부/알고리즘 2024. 5. 6. 22:24
문제링크 제출코드while True: num = input() if num == '0': break while True: if(len(str(num)) == 1): print(num) break num = str(sum(map(int, list(num)))) """ num = str(sum(map(int, list(num))))입력받은 문자열을 우선 list로 변경한 후 map을 이용해서 안에 들어있는 list 요소를 int형으로 변환하여 더한 후 다시 문자열로 형변환을 한다.따라서 num의 len값이 한자리가 된다면 반복문을 중단하고 출력하게 된다.""" map : 주어진 시퀀스(리스트..
-
[BAEK JOON] 1292. 쉽게 푸는 문제 (Python)공부/알고리즘 2024. 4. 28. 15:20
문제링크https://www.acmicpc.net/problem/1292 제출 코드import sysn = list(map(int, sys.stdin.readline().split()))sumdata = 0sequence = []sequence.append(0)for i in range(1000): for j in range(i): sequence.append(i)for k in range(n[0], n[1]+1): sumdata = sequence[k] + sumdataprint(sumdata) 문제의 핵심은 특정 구간 A ~ B를 입력하면 1~1000의 수열에서 그 구간 사이에있는 숫자를 더하면 된다. 따라서 중첩 반복문을 사용해서 미리 정해진 구간의 수열을 만든 후 반..
-
[BAEK JOON] 1251. 단어 나누기 (Python)공부/알고리즘 2024. 4. 27. 15:07
문제링크https://www.acmicpc.net/problem/1251 제출 코드import sysn = sys.stdin.readline().strip()words = []for i in range(1, len(n)): for j in range(i + 1, len(n)): word1 = n[:i][::-1] word2 = n[i:j][::-1] word3 = n[j:][::-1] words.append(word1 + word2 + word3)print(sorted(words)[0]) 문제를 풀면서 사전식 정렬, 뒤집기, 단어 나누기에서 제일 생각을 많이한 부분이 입력된 문자열에서 임의로 두 부분을 나누는 부분을 어떻게 해야할까 생각하면서 찾..
-
[BAEK JOON] 1094. 막대기 (Python)공부/알고리즘 2024. 4. 25. 15:59
문제링크 1094번: 막대기지민이는 길이가 64cm인 막대를 가지고 있다. 어느 날, 그는 길이가 Xcm인 막대가 가지고 싶어졌다. 지민이는 원래 가지고 있던 막대를 더 작은 막대로 자른다음에, 풀로 붙여서 길이가 Xcm인 막대www.acmicpc.net 제출 코드import sys//64cm bar를 반으로 자른 값을 저장한 리스트barlist = [64, 32, 16, 8 , 4 , 2 , 1]//막대기를 카운트할 변수 bar_count = 0x = (int(sys.stdin.readline().strip()))//반복문으로 가지고있는 막대기의 길이를 하나씩 가져온다.// x >= i 경우만 count 값을 증가 (x가 23이면 64, 32는 될수가 없기에 제외된다.) // 처음 16이 들어가고 x..
-
[BAEK JOON] 2822. 점수 계산 (Python)공부/알고리즘 2024. 4. 18. 20:26
문제링크 2822번: 점수 계산8개 줄에 걸쳐서 각 문제에 대한 참가자의 점수가 주어진다. 점수는 0보다 크거나 같고, 150보다 작거나 같다. 모든 문제에 대한 점수는 서로 다르다. 입력으로 주어지는 순서대로 1번 문제, 2번 문www.acmicpc.net 제출코드import sys#input 리스트 score = []#index 출력리스트index_data = [];#sum 출력 변수 sum_data = 0;#8개 점수 입력 (int 형으로)for i in range(8): score.append(int(sys.stdin.readline().strip()))#리스트로 Shallow Copyscore_copy = score[:]#역 정렬score.s..
-
[BAEK JOON] 1181. 단어 정렬공부/알고리즘 2024. 4. 17. 15:57
1. 문제링크 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 2. 해설 처음 문제를 봤을 때 ord를 이용해 유니코드 값으로 비교를하거나 len값을 이용해서 문제를 풀어야겠다 생각했다. //최소값을 이용해서 정렬하기 alpa = [] lenth = [] sort_data = 0 output = [] n = int(sys.stdin.readline()) for i in range(n): alpa.append(sys.stdin.readline().strip()); sort_data = sorted(a..