코딩테스트준비 18

코테 스터디 23번째 TIL : 숫자 문제 풀이

문제https://www.acmicpc.net/problem/1181   코드n = int(input())a = []for i in range(n): word = input() # 중복된 단어가 아닐 경우에만 리스트에 추가 if word not in [w[0] for w in a]: # 리스트의 첫 번째 요소를 기준으로 확인 a.append((word, len(word)))# 길이로 정렬하고, 길이가 같으면 단어의 사전 순서로 정렬a.sort(key=lambda x: (x[1], x[0]))# 결과 출력for i in range(len(a)): print(a[i][0])  설명 및 개념 💡 a.sort( key= lambda x : ( x[1], x[0] )) : 다..

코딩테스트 2024.09.30

코테 스터디 22번째 TIL : 시간복잡도 , 완전탐색 문제 풀이

코테 스터디 N번째 TIL : 문제 풀이문제https://www.acmicpc.net/problem/24262   코드n=int(input())print(1)print(0)  설명 및 개념 주어진 알고리즘 MenOfPassion(A[], n)에서 수행하는 코드1의 수행 횟수는 항상 1회입니다. 이유는 주어진 n에 상관없이 배열 A의 중간에 해당하는 인덱스의 값을 반환하기 때문입니다.문제를 분석하면: 수행 횟수: 코드1이 호출되는 횟수는 n과 상관없이 항상 1번입니다. 즉, n의 값이 무엇이든 상관없이 한 번만 수행됩니다.다항식의 최고차항 차수: 수행 횟수는 입력 n에 비례하지 않는 상수 시간(즉, O(1))입니다. 이는 다항식으로 나타내면 최고차항의 차수가 0이 된다는 의미입니다.      문제https..

코딩테스트 2024.09.24

코테 스터디 21번째 TIL : 문제 풀이

문제https://www.acmicpc.net/problem/1316    코드def is_group(word): seen = [] #이미 확인한 문자를 저장할 리스트 prev = '' #이전 문자를 저장할 변수 for x in word: if x != prev: if x in seen: return False seen.append(x) prev=x return Truen=int(input())cnt=0for i in range(n): word=input() if is_group(word): cnt+=1print(cnt)  다른 풀이의 코드N = int(input())cnt = Nfor i in range(N): word = in..

코딩테스트 2024.09.23

코테 스터디 20번째 TIL : 문제 풀이

코테 스터디 N번째 TIL : 문제 풀이문제https://www.acmicpc.net/problem/10811      코드n,m=map(int,input().split())a=list(range(1,n+1))for x in range(m): i,j=map(int,input().split()) a[i-1:j] = reversed(a[i-1:j])for i in a: print(i,end=' ')  설명 및 개념 💡 a[i:j] = reversed(a[i:j]) 와 같이 reversed() 함수를 사용하여 리스트의 원하는 범위까지 뒤집을 수 있다      문제https://www.acmicpc.net/problem/11718    코드import sysinput = sys.stdin.read# 입력..

코딩테스트 2024.09.18

코테 스터디 18번째 TIL : 탐색, 시뮬레이션 문제 풀이

문제두 리스트 합치기 - 탐색   코드n=int(input())a=list(map(int,input().split()))m=int(input())b=list(map(int,input().split()))p1=0p2=0c=[]while p1  설명 및 개념 💡 p1과 p2를 포인터로 사용하여 문제를 해결      문제격자판 최대합 - 시뮬레이션     코드 n=int(input())a=[list(map(int,input().split())) for _ in range(n)]large=-21345000for i in range(n): sum1=0 sum2=0 for j in range(n): sum1+=a[i][j] if sum1 > large: large = sum1 su..

코딩테스트 2024.09.05

99클럽 코테 스터디 37일차 TIL : DFS 문제 풀이

문제 연습코드n,m= map(int,input().split())g=[[0]*(n+1) for _ in range(n+1)]#1번부터 n번까지 있어야하므로 n+1개를 만들어야지 0번부터 .n번까지 인덱스 번호가 생긴다 .#(n+1)(n+1) 2차원 리스트를 만들어야지 n번 인덱스까지 생긴다for i in range(m): a,b=map(int,input().split()) g[a][b]=1 g[b][a]=1for i in range(1,n+1): for j in range(1,n+1): print(g[i][j], end=' ') print()##포문을 1부터 n+1까지만 돌려서 1행부터 n행까지 출력한다   설명 및 개념 💡 그래프 = 노드와 간선의 집합 💡 가중치 방향그래프 = 간선에..

코딩테스트 2024.08.27

99클럽 코테 스터디 19일차 TIL : DFS, 그리디 문제 풀이

문제   코드def DFS(L,sum,tsum): global result if sum+(total-tsum) c: return if L==n: if sum>result: result=sum else: DFS(L+1,sum+a[L],tsum+a[L]) DFS(L+1,sum,tsum+a[L])c , n= map(int,input().split())a=list(map(int,input().split()))total=sum(a) result=-24000000DFS(0,0,0)  설명 및 개념바둑이의 무게를 하나의 집합으로 보고 여기서 트럭에 태울 수 있는 무게를 부분집합으로 생각하고 부분집합 구하기로 문제를 푼다{81, 58, 42, 33, 61} --> { } tsum..

코딩테스트 2024.08.09

99클럽 코테 스터디 18일차 TIL : 재귀함수 문제 풀이

문제   코드def DFS(x): if x==0: return else: DFS(x//2) print(x%2,end='')n=int(input())DFS(n)  설명 및 개념 💡 원하는값을 제일 마지막부터 가져오고 싶으면 재귀함수 호출 후에 그 코드를 작성하면된다 재귀함수 호출 전에 코드를 작성하면 원하는 값을 처음부터 가져올  수 있다    문제    문제 설명원소가 3개인 경우 부분집합의 개수 는 8개이다1,2,3 의 경우1을 출력하는 경우와 출력하지 않는 경우 --> 2가지2를 출력하는 경우와 출력하지 않는 경우 --> 2가지3을 출력하는 경우와 출력하지 않는 경우 --> 2가지2가지 X 2가지 X 2가지 = 8가지이다 (공집합 포함)   부분집합 구하기는 다음과 같은 상태트리..

코딩테스트 2024.08.09

99클럽 코테 스터디 15일차 TIL : 그리디 문제 풀이

문제씨름선수 - 그리디   코드n= int(input())player=[]for i in range(n): t, w= map(int,input().split()) player.append((t,w))player.sort(reverse=True)largest=0cnt=0for t, w in player: if w > largest: largest=w cnt+=1print(cnt)  설명 및 개념 💡 이중 포문을 쓰지 않기 위해서 최댓값 구하기 방식을 사용했다     문제타이타닉 - 그리디   코드n,m= map(int,input().split())w=list(map(int,input().split()))w.sort()cnt=0while w: if len(w)==1: cnt+=1 ..

코딩테스트 2024.08.05

99클럽 코테 스터디 14일차 TIL : 그리디, 문제 풀이

그리디 알고리즘그리디 알고리즘 (탐욕법)은 현재 상황에서 지금 당장 좋은 것만 고르는 방법을 의미한다문제를 풀기 위한 최소한의 아이디어를 떠올릴 수 있는 능력을 요구한다정당성 분석이 중요 —> 단순히 가장 좋아 보이는 것을 반복적으로 선택해도 최적의 해를 구할 수 있는지 검토한다그리디 알고리즘은 대부분 정렬을 사용한다        문제   코드n= int(input())meeting=[]for _ in range(n): s, e= map(int, input().split()) meeting.append((s,e))meeting.sort(key=lambda x : (x[1],x[0]))cnt=0et=0for s, e in meeting: if s >= e: cnt+=1 et=eprint(c..

코딩테스트 2024.08.04