Algorithm Study/Python
-
[백준] 1159번 농구 경기Algorithm Study/Python 2024. 1. 28. 21:48
https://www.acmicpc.net/problem/1159 1159번: 농구 경기 상근이는 농구의 세계에서 점차 영향력을 넓혀가고 있다. 처음에 그는 농구 경기를 좋아하는 사람이었다. 농구에 대한 열정은 그를 막을 수 없었고, 결국 상근이는 농구장을 청소하는 일을 시작 www.acmicpc.net 풀이 입력받은 리스트를 정렬하여 연속으로 5개 이상 나오는 경우 답에 추가하는 방식으로 구현하려고 했으나 반복문을 돌리면서 본인 첫글자에 해당하는 index에 1씩 더해주는 방법이 더 쉬울 것 같아서 해당 방법으로 구현했다. N = int(input()) data = [] for i in range(N): data.append(input()) N을 입력받은 뒤 N번 반복을 시켜 여러 데이터를 입력 받았다..
-
[백준] 10988번 팰린드롬인지 확인하기Algorithm Study/Python 2024. 1. 28. 21:32
https://www.acmicpc.net/problem/10988 10988번: 팰린드롬인지 확인하기 첫째 줄에 단어가 주어진다. 단어의 길이는 1보다 크거나 같고, 100보다 작거나 같으며, 알파벳 소문자로만 이루어져 있다. www.acmicpc.net 풀이 팰린드롬이란 앞으로 읽을 때와 거꾸로 읽을 때 똑같은 단어를 말한다. 다양한 해결책이 있을 수 있다. 뒤집어진 문자열을 만들어서 비교, 양 끝을 비교해서 같으면 잘라낸 뒤 마지막에 남는 길이가 0 또는 1인지 확인 양쪽에서부터 같은 문자인지 확인 등 나는 마지막에 이야기한 양쪽에서부터 문자를 확인하여 같은 문자면 1칸씩 더하고 빼는 방법을 사용해보려고 한다. data = input() answer = 1 for idx in range(len(da..
-
[백준] 1343번 폴리오미노Algorithm Study/Python 2024. 1. 16. 21:46
https://www.acmicpc.net/problem/1343 1343번: 폴리오미노 첫째 줄에 사전순으로 가장 앞서는 답을 출력한다. 만약 덮을 수 없으면 -1을 출력한다. www.acmicpc.net 풀이 출력 첫째 줄에 사전순으로 가장 앞서는 답을 출력한다. 만약 덮을 수 없으면 -1을 출력한다. 출력 조건이 사전순이기 때문에 'AAAA'를 넣을 수 있으면 무조건 넣어야하는 문제라 단순하게 풀 수 있다. count = 0 answer = "" for i in input_string: if i == 'X': count += 1 if count == 4: answer += "AAAA" count = 0 문자는 X , . 두 종류가 있고 X이면 count를 증가시켰다. count가 4가 되면 AAAA..
-
[백준] 11655번 ROT13Algorithm Study/Python 2024. 1. 16. 21:30
https://www.acmicpc.net/problem/11655 11655번: ROT13 첫째 줄에 알파벳 대문자, 소문자, 공백, 숫자로만 이루어진 문자열 S가 주어진다. S의 길이는 100을 넘지 않는다. www.acmicpc.net 풀이 입력 첫째 줄에 알파벳 대문자, 소문자, 공백, 숫자로만 이루어진 문자열 S가 주어진다. S의 길이는 100을 넘지 않는다. 입력을 보면 S길이는 100 알파벳 대,소문자는 총 52자이기 때문에 단순 if 문으로 구현해도 특별히 문제없이 해결될 것같지만 아스키 코드를 이용해서 풀어봤다. python은 ord()를 통해 아스키 코드로 변환, chr()를 이용하여 다시 문자로 변화할 수 있다.| 'A'는 65 'Z'는 90 'a'는 97 'z'는 122이다. 전체 ..
-
[정올] 주사위 던지기1Algorithm Study/Python 2021. 10. 15. 01:52
기본적인 DFS로 구현하는 중복순열, 조합, 순열을 만드는 문제이다. 이 3가지 기능은 완전탐색을 요구하는 경우 많이 사용하기 때문에 필수적으로 구현할 수 있어야하고 또 빠른 시간 내에 구현할 수 있어야한다. 풀이 N, M = map(int, input().split()) path = [0 for _ in range(N)] used = [0 for _ in range(7)] def run1(lev): if lev == N: print(*path) return for i in range(1, 7): path[lev] = i run1(lev+1) def run2(lev, start): if lev == N: print(*path) return for i in range(start, 7): path[lev] ..
-
[SWEA] 특이한 자석Algorithm Study/Python 2021. 10. 12. 01:47
https://swexpertacademy.com/main/main.do SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 풀이 처음 들어온 톱니바퀴의 이동에 따라서 주변에 있는 톱니바퀴로 어떻게 퍼져나가는지를 구현하면 된다. gears = [deque(map(int, input().split())) for _ in range(4)] 톱니바퀴는 회전을 쉽게 구현하기 위해서 deque로 생성했다. def rotate(index, d): if d == 1: gears[index].appendleft(gears[index].pop()) elif d == -1: gears[index].append(gears[index]..
-
[SWEA] 활주로 건설Algorithm Study/Python 2021. 10. 11. 14:08
https://swexpertacademy.com/main/main.do SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 같은 높이의 구간이 X만큼 연속되어 있는지 찾아내는 문제이다. 단순하게 구간을 계산하면서 넘어갔는데 높이가 바뀌는 경우에 count를 1로 초기화할지 0으로 초기화할지 잘 생각해야하는 문제였다. 풀이 T = int(input()) for test_case in range(1, T+1): N, X = map(int, input().split()) board = [list(map(int, input().split())) for _ in range(N)] answer = 0 # 가로 방향 탐색 f..
-
[SWEA] 무선 충전Algorithm Study/Python 2021. 10. 11. 02:37
https://swexpertacademy.com/main/main.do SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 풀이 사용자와 BC의 거리를 계산해서 충전할 수 있는지 판단하고 충전할 수 있다면 어떤 BC를 선택하는 것이 가장 많은 양을 충전할 수 있는지 계산하는 것이 핵심인 문제이다. M, A = map(int, input().split()) # 이동하는 방법 direction = [[0, 0], [-1, 0], [0, 1], [1, 0], [0, -1]] P1 = list(map(int, input().split())) p1x, p1y = 1, 1 P2 = list(map(int, input().s..