study

N = int(input()) ls = set() emoji = 0 for _ in range(N): log = input() if log == 'ENTER': emoji += len(ls) ls.clear() else: ls.add(log) emoji += len(ls) print(emoji) https://www.acmicpc.net/problem/25192 25192번: 인사성 밝은 곰곰이 첫번째 새로운 사람이 들어온 뒤 pjshwa, chansol, chogahui05은 모두 곰곰티콘으로 인사했다. 두번째 새로운 사람이 들어온 뒤 pjshwa와 chansol은 다시 곰곰티콘으로 인사했다. www.acmicpc.net
from itertools import combinations N, M = map(int, input().split()) ls = list(combinations(range(1, N+1), M)) for i in ls: for j in i: print(j) https://www.acmicpc.net/problem/15650
a1, a0 = map(int, input().split()) c = int(input()) n0 = int(input()) if (a1 * n0 + a0)
# 라이브러리를 이용해 순열을 구함 from itertools import permutations N, M = map(int, input().split()) ls = list(permutations(range(1, N + 1), M)) for i in ls: for j in i: print(j, end=' ') # dfs(깊이 우선 탐색) N, M = map(int, input().split()) s = [] # 수열이 담길 리스트 visited = [False] * (N+1) # 중복제거를 위한 체크용 리스트 def dfs(): if len(s) == M: print(' '.join((map(str, s)))) return for i in range(1, N+1): if visited[i]: conti..
# 이진탐색 사용해서 풀기 N = int(input()) # 숫자 카드 개수 cards = sorted(list(map(int, input().split()))) # 숫자 카드 리스트 M = int(input()) # 찾아야할 숫자 개수 nums = list(map(int, input().split())) # 찾아야할 숫자 리스트 num_dict = {} for n in cards: # 갖고 있는 카드들을 딕셔너리에 추가. 리스트에 있는 개수만큼 value를 더한다. if n in num_dict: num_dict[n] += 1 else: num_dict[n] = 1 # 이진탐색 함수 def binary(target, cards, start, end): if start > end: # 시작값이 끝값보다 ..
n = int(input()) print((n-2) * (n-1) * n // 6) print(3) 또 돌아온 알고리즘 수업.... 이번에도 sum이 몇번 반복되는지를 묻는 문제다. MenOfPassion 코드를 살펴보면 코드 1은 3중 for문 내에 있다. 그렇다면 제일 바깥 for문의 반복 횟수 * 중간 for 문의 반복 횟수 * 안쪽 for문의 반복 횟수를 구해주면 된다. i는 1부터 n - 2까지 반복, j는 i + 1부터 n - 1까지, k는 j + 1부터 n까지 반복한다. 즉 i의 실행 횟수는 n - 2, j는 (n - 2) * (n - 1)번, k는 (n - 2) * (n - 1) * n번 실행된다. 그래서 코드 1의 횟수는 (n - 2) * (n - 1) * n회이다. 그리고 중첩된 반복문..
내 코드 n = int(input()) print((n-1) * n // 2) print(2) 이 문제 풀면서 정말 어려웠다... 처음에는 문제가 이해가 되지 않아서 여러번 읽어봤고, 그래도 어떻게 해야할지 몰랐는데 시간복잡도를 찾아보면서 이해할 수 있었다. 문제에서 요구하는 것은 코드 1의 수행 횟수, 즉 이중 for 문 내부의 sum이 몇번이나 실행되는지를 말하는 것이다. 그렇다면 바깥쪽 for문의 반복 횟수 X 안쪽 for문의 반복 횟수를 해주면 답이 나온다. 바깥쪽 for 문의 i는 1부터 n - 1까지 반복된다. 그리고 안쪽 for 문의 j는 i + 1부터 n까지 반복된다. 예제처럼 n이 7이라고 할 경우, 반복되는 내용을 정리해보면 이렇다. i가 1일때 - j는 2 ~ 7까지 반복 (6회) i..
· study/TIL
https://1ncomparable.tistory.com/208 230213 - 재귀 1. 재귀(Recursion) 재귀란? 재귀(再歸) : 원래의 자리로 되돌아가거나 되돌아옴. 재귀 함수 : 자기자신을 호출하는 함수. 반복적인 작업을 해야하는 문제를 더 간결하게 풀어낼 수 있다. 1) 재귀로 문 1ncomparable.tistory.com 재귀 함수 정리 재귀 함수는 자기 자신을 호출하는 함수이다. 반복적인 작업을 해야할때 유용하게 사용할 수 있다. sum(n) : 1부터 num까지의 합을 리턴해주는 함수 def sum(n): if n == 1: return n return n + sum(n-1) sum(5) 코드 풀이 sum(5)가 호출 sum(5) 내부에서 5 + sum(4)가 반환. sum(4)..
· study/TIL
시간 복잡도 알고리즘이 입력 크기에 따라 실행되는 데 필요한 시간을 나타내는 것이다. 일반적으로 입력 크기가 증가함에 따라 알고리즘의 실행 시간이 어떻게 증가하는지를 나타낸다. 보통 빅오 표기법을 사용하여 나타낸다. 이 표기법은 입력 크기에 대한 알고리즘 실행 시간의 상한을 나타내고, 주로 알고리즘의 실행 시간이 최악의 경우에 얼마나 증가하는지를 나타내는데 사용된다. 시간 복잡도를 고려하여 효율적인 알고리즘을 구현한다면 입력값이 커짐에 따라 증가하는 시간의 비율을 최소화 한 코드를 구성했다는 의미이다. 빅오 표기법(big-O notation) 입력값(n)에 대한 수식에서 최고차항을 기준으로 알고리즘이 수행되는 최악의 시간 복잡도를 표현한다. 최고차항을 기준으로 하는 이유는 연산의 수가 극한에 수렴할때 나..
S = input() newSet = set() # 중복없이 부분 문자열을 담아줄 set 객체 for i in range(len(S)): # 기준이 될 i for j in range(len(S)): # 범위가 될 j j = j + i # i가 1인경우 0부터 시작하지말고 1부터 시작해야함... newSet.add(S[i:j+1]) # 슬라이싱의 end 인덱스 전까지 값이 복사되니까 +1 해줌 print(len(newSet)) https://www.acmicpc.net/problem/11478 11478번: 서로 다른 부분 문자열의 개수 첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000 이하이다. www.acmicpc.net
해리Harry
'study' 카테고리의 글 목록 (10 Page)