Problem Solving/알고리즘

    #브루트 포스 (Brute Force)

    #브루트 포스 검색 대상이 되는 원본 문자열의 처음부터 끝까지 차례대로 순회하며 문자들을 일일히 비교하는 방식의 알고리즘. 비교하고자 하는 문자열과 패턴을 한칸씩 이동하면서 비교하여 일치 여부를 확인한다. #비교 과정 T : 원본 문자열 P : 찾고자 하는 문자열 패턴 1. t,p 모두 첫 문자부터 비교를 시작하므로 검색 인덱스를 맨 처음 인덱스로 설정한다. 2. 각각의 검색 인덱스부터 하나씩 문자를 비교한다. 2-1. 비교문자가 같으면 t,p 인덱스모두 뒤로 한칸씩 이동 2-2. 비교문자가 다르면 t의 인덱스는 한칸 뒤로 이동하고, p의 인덱스는 맨 처음으로 돌아간다. 3. 2과정부터 검색이 끝날때까지 반복한다. #파이썬 코드 ㅡ 비교대상 문자열의 끝까지 비교하거나, 패턴을 찾을때까지 반복해서 문자를 ..

    #뭔가 코드를 짜면서 거창하다,이게 맞나? 느껴질 때

    import sys a,b,c=map(int,sys.stdin.readline().split()) i=1 while a+b*i > c*i: i+=1 if i>210000000: i=-1 break if i==-1: print(i) else: print(i+1) A, B, C = map(int, input().split()) if B>=C: print(-1) else: print(int(A/(C-B)+1)) 코드를 짜다가 이게 맞나? 싶은 생각이 종종 든다. 뭔가 머릿속으로 무한루프 돌리면서 해당조건 만족할때 break 되니까 코드에 이상만 없다면 무한으로 돌아가지 않고 잘 빠져나오겠지 라는 생각인데 실제로 해보면 너무 비효율적이라는걸 실감한다. 나에게 아직 부족한건 , 1. 문제를 해석하고 원하는 핵심키..

    #문자열 내에 원하는 문자열 포함여부 체크하는 방법

    1. find() 찾고자 하는 문자열이 존재하는 경우, 시작 인덱스 값을 리턴한다. 찾는 문자열이 존재하지 않는 경우 -1을 리턴한다. 2. in, not in 결과값이 존재하면 True를 리턴하고, 존재하지 않을 경우 False 값을 리턴한다. 3. 리스트(List)에서 문자열 포함여부 확인 list_data=['파이썬','자바',프로그래밍] if '파이썬' not in list_data: print("문자열 없음") else: print("문자열 있음") 3. 딕셔너리(dictionary)에서 존재여부 확인 dict_data={"파이썬":0,"자바":1} hashtag="파이썬" #hashtag 값이 딕셔너리에 존재하는지 여부 체크 if not (hashtag in dict_data): dict_va..