알고리즘 24

백준-1181-단어정렬

코드 1N = int(input())word = []for i in range(N): a = input() if a not in word: word.append(a)word.sort(key = lambda x : (len(x), x))for i in word: print(i) 이 문제는 바로 sort메서드에서 조건을 주고 정렬만 해주면 되는 간단한 문제였다.그래서 sort의 key로써 첫 번째 조건은 입력받은 str값의 길이 , 두 번째 조건은 단순히 알파벳순으로 조건을 주었다. 하지만 이렇게 구현을 하면 4456ms로 시간이 많이 소모가 되는 것을 알 수 있다. 이유는 다음과 같았다.1. list로 입력 받아서 중복을 없애기 위한 if문 부분에서 한 글자마다 확인을 하므로 ..

알고리즘/백준 2024.04.10

백준-1158-요세푸스 문제

구현(N , K)1 2 3 4 5 6 7    :: 3      1 2 4 5 6 7      :: 6      1 2 4 5 7        :: 2     1 4 5 7          :: 7      1 4 5            :: 5      1 4              :: 1      4                :: 4 위와 같이 동작과정을 나열해보면 이것이 원형 큐 방식으로 동작하는 것을 알 수 있다.그래서 idx가 리스트의 값을 넘어갔을 때 % 연산자를 활용하는 것이 포인트인 것 같다.구현 코드 N, K = map(int, input().split())n = [i for i in range(1,N + 1)]result = []idx = 0while True: if len(n..

알고리즘/백준 2024.04.06

백준-2563-색종이

구현 코드T = int(input())p = [[0]*100 for i in range(100)]sum = 0for i in range(T): x,y = map(int, input().split()) for i in range(10): for j in range(10): if((x+i) 2차원 리스트를 활용해서 색종이를 붙인 부분은 1로 기록한다.그러고 2차원 리스트의 행을 순회하면서 1이 기록된 개수를 세면 색종이가 붙은 면적을 구할 수 있었다. 2차원 리스트를 사용하지 않고 풀이를 하는 방법으로 풀어보려고 했는데 생각이 나지 않아 2차원 리스트를 활요해 풀이했다.다른 풀이도 참고해보았는데 대부분의 다른 분들도 이런 방식으로 풀이를 한 것 같다.  문제링크

알고리즘/백준 2024.04.06

백준-8979-올림픽

구현한 코드N , K = map(int, input().split()) # m : 찾는 국가 번호prize = [0 for i in range(4)]for i in range(N): prize[i] = list(map(int,input().split()))# prize = [list(map(int,input().split())) for _ in range(N)] # 2차원 배열 입력 받는 또 다른 방법prize.sort(key = lambda x: (x[1], x[2] , x[3]) , reverse=True)# 람다식을 활용하여 정렬 기준을 금, 은 , 동 순서로 기준을 주었다.# 찾는 국가의 인덱스 => 순위idx = 0for j in range(N): if(prize[j][0] == K)..

알고리즘/백준 2024.04.05