전체 글

전체 글

    [백준-1236] 성지키기 파이썬 풀이

    [백준-1236] 성지키기 파이썬 풀이

    # 문제 # 풀이 각 행과 열에는 하나 이상의 경비원이 존재해야 한다. 일단 행 검사를 통해 경비원의 유무를 파악하고 변수를 만들어 담고, 열 검사를 통해 해 당열을 지키는 경비원이 있는지 파악한다. 행,열중 최대값을 출력하면 된다. 그리고 굳이 이중 배열을 사용하지 않고 배열에 문자열을 담고 배열에 접근한 인덱스로 알아낸 문자열의 인덱스로 접근할 수 있다. # 코드 import sys def solve(): row,col = map(int,sys.stdin.readline().strip().split()) castle = [] for i in range(row): castle.append(sys.stdin.readline().strip()) plus_row = 0 for i in range(row): ..

    [백준-1302] 베스트 셀러 파이썬 풀이

    [백준-1302] 베스트 셀러 파이썬 풀이

    # 문제 # 풀이 문제는 매우 간단하다. 파이썬의 딕셔너리를 이용한다면 쉽게 풀 수 있다. 하지만 동일한 순위의 책이 존재한다면 사전순(오름차순)에서 가장 앞에 있는 책을 선택해야하는데 이 것을 처리하기 위해서 막혔었다. temp = sorted(dic.items()) temp = dict(temp) print(max(temp,key=lambda x: dic[x])) 위와 같이 사용하면 된다. dic.items()를 반환하면 (key, value)형태의 튜플이 나오게 되는데, 이것을 정렬 시켜준 후 다시 dict로 바꾸면 된다. # 코드 import sys # sorted를 사용해서 key를 사전순으로 정렬 후 # 다시 dict로 타입변경 후 max를 수행 def solve(): N = int(sys.s..

    [백준-1543] 문서 검색 파이썬 풀이

    [백준-1543] 문서 검색 파이썬 풀이

    # 문제 # 풀이 나는 파이썬의 find를 활용해서 문제를 풀었다. find를 사용하지 않아도 똑같은 방식으로 index값을 조정해줘서 풀 수 있다. 파이썬의 find함수는 3가지의 사용방법이 있다. 대상문자열.find( 찾을 문자열 ) 대상문자열.find( 찾을 문자열, 시작위치 ) 대상문자열.find( 찾을 문자열, 시작위치, 종료위치 ) find메서드는 찾을 첫번째 문자(열)의 인덱스를 반환해준다. 만약 찾지 못했다면 -1을 반환해주기 때문에 이점을 이용하면 쉽게 문제를 풀 수 있다. 중요한 것은 찾았다면 count를 +1 해준 후, find의 시작위치를 찾은 인덱스의 그 다음부터로 바꿔줘야한다. # 코드 """ find는 찾지 못하면 -1 반환, index함수는 에러 반환 find ( 찾을문자열 ..

    [백준-1568] 새 파이썬 풀이

    [백준-1568] 새 파이썬 풀이

    # 문제 # 풀이 " o, o, o, o, o, o, o, o, o, o " 다음과 같이 10마리 새가 존재하면, 현재 음정이 1이면 한마리가 날라가서 9마리가 남고 음정이 2증가하여 두마리가 날라거서 7마리가 남고.. 를 계속해서 반복하다가, 음정(날라가야하는 수)보다 남아있는 새의 개수가 더 작은 경우 음정이 1로 리셋되서 다시 시작되는 문제이다. 문제만 이해했다면 쉽게 풀 수 있다. # 코드 def solve(): n = int(input()) fly = 1 time = 0 while n > 0: if n >= fly : n = n - fly fly +=1 time += 1 # print(f"n {n} fly{fly}") else : fly = 1 # print(f"n {n} fly{fly}") p..

    [백준-1668] 트로피 진열 파이썬

    [백준-1668] 트로피 진열 파이썬

    # 문제 # 풀이 왼쪽 오른쪽에서 본다는 말이 리스트의 담겨진 트로피를 시작인덱스부터 볼 것인지 마지막 인덱스부터 볼 것인지를 뜻한다. 내가 생각해낸 로직은 간단하다. 큰게 있으면 뒤에꺼가 안보인다. max값을 관리하면서, 리스트를 순회하면서 최대값이 갱신되었을때 count를 1씩해주는 방법을 이용한다. LEFT와 RIGHT경우가 존재하기 때문에 두번 돌려주도록 하자. # 코드 import sys def solve(): N = int(sys.stdin.readline().strip()) arr = [] for _ in range(N): tropi = int(sys.stdin.readline().strip()) arr.append(tropi) max = 0 cnt = 0 # 순회하면서 max값이 갱신되면 ..