본문 바로가기

백준파이썬4

[백준/6550] 부분 문자열 | 반복문으로 고정된 인덱스 다루기 알고리즘 있는지 없는지 확인하면 되겠네~~ 개꿀~~ 이런 태도로 문제를 대했지만 내가 간과한 것이 있었다. 처음에 이중 for문으로 s랑 t를 비교해서 다르면 pop하는 알고리즘을 생각했는데 이렇게 하면 s가 t의 '부분 문자열'인지 알 수 없다. 왜냐면,, 전체를 돌면서 문자가 다르기만 하면 pop을 해버리니까 '부분 문자열'인지 판단이 불가능하다. s에 속하는 문자가 있냐/없냐의 문제가 아니라 s가 t의 부분 문자열인가?라는 문제기 때문에 이중 for문으로 s와 t를 도는 식으로는 해결이 불가능하다는 뜻. 따라서 s를 단순히 반복하며 t에 있는 문자들과 비교하는 방식이 아니라 순차적으로 돌면서 t에 속하는 문자와 같은지 확인해주면 된다. 1. for문으로 비교하고자 하는 t를 돌면서 만약 t의 문자와.. 2023. 2. 21.
[백준/1942] 디지털시계 | 1초씩 증가 => while t += 1 🤓 시간 표현(시,분,초) 시/분/초를 나눠서 구현해야 하는 문제는 알고리즘을 모르면 꽤 돌고 돌아서 구현을 하는 경우가 생긴다. (유경험자) 이 문제에서는 3으로 나누어 떨어지는 시계 정수의 개수를 구해야 하지만, 시간 문제를 푸는 방법에 집중하여 포스팅하려 한다. (복습용으로..🤓) 시: 0부터 24까지의 숫자로 나타낼 수 있음. 60분에 1시간이므로 분값이 60으로 증가되었을 때, 분 변수는 0으로 초기화되고 시 변수는 +1 분: 0부터 60까지의 숫자로 나타낼 수 있음. 60초에 1분이므로 60초가 되었을 때 초 변수는 0으로, 분 변수에는 +1 추가 초: 0부터 60까지의 숫자로 나타낼 수 있음. # 표현 방법 if s1 == 60 : m1 += 1; s1 = 0 if m1 == 60 : h1 .. 2023. 1. 27.
[백준/14592] 2017 아주대학교 프로그래밍 경시대회(small) - 파이썬 📝 알고리즘 그냥... 완전 탐색으로 풀었다.. N의 크기가 1= n: print(t.index(min(t))+1) break else: print(cnt.index(min(cnt))+1) break else: print(total.index(max(total))+1) break count 함수는 문자열이나 list에만 사용할 수 있다. 처음에 문자열에만 사용 가능하다 생각하고 map(str, list)랑 map(int,list)를 번갈아 가며 해주었다. 똥코드 😆. 코테였다고 생각하니까 끔찍하다. 매일매일 배우는 게 중요하지.. 코테까지만 잘 하면 된다!! 하나씩 구현하면서 코드를 정확하게 구현하는 법을 익혀야겠다. 내가 쓴 코드도 계속 보니 고칠 점이 많았다.. 더 많이 공부해서 잘하고싶다 흑 2023. 1. 18.
[백준/13424] Three Dots / 완전탐색 - 파이썬 📝 알고리즘 이 문제는 완전탐색 방식으로 풀면 점의 개수가 1000 개일 때, 1000 * 1000 * 1000 = 10^9로 시간 초과를 하게 된다. 따라서 세 점의 거리가 동일한 케이스를 모두 계산하는 방법이 아닌, 동일한 간격이 존재하는 점을 찾는 방식으로 구현하도록 한다. 수직선 상에 임의의 세 점 a,b,c가 있을 때 점 C는 b에서 a와 b의 거리만큼 더한 값이다. 이 알고리즘을 활용하여 점 C를 찾고, 이 값이 입력받은 list에 존재한다면 세 점은 동일한 거리를 가진 점들이다. 💻 최종 코드 from collections import defaultdict t = int(input()) for _ in range(t): n = int(input()) dots = sorted(list(map(.. 2023. 1. 17.