분류 전체보기
-
[백준 14561] 회문, [백준 17609] 회문카테고리 없음 2025. 3. 1. 11:57
백준 14561n진법으로 변환 후 회문인지 체크 10이상 넘어가면 A로 표현하는거 체크n진법계산시num%base 연산 수행후 답을 저장해두고num을 base로 나눈 몫으로 업데이트 @@ num이 0이 될때까지 반복import sysinput= sys.stdin.readlinefrom collections import dequen = int(input().rstrip())def isPalindrome(myStr): left=0 right=len(myStr)-1 while left=10: res=hex(res)[2:].upper() baseNum.append(str(res)) num//=base # baseNum=base..
-
[이분탐색] [백준] 실5 숫자카드 + [프로그래머스] LV3 입국심사카테고리 없음 2025. 2. 28. 21:26
문제1 내가 가진 카드 더미와찾아야할 카드 숫자들 방법 1이분탐색을 위해 내가 가진 카드더미를 정렬 시키고 이분탐색 구현하면import sysN = int(sys.stdin.readline())cards = list(map(int, sys.stdin.readline().split()))M = int(sys.stdin.readline())checks = list(map(int, sys.stdin.readline().split()))cards.sort()for check in checks: exist=False left,right=0, len(cards)-1 while leftcheck: right=temp-1 else: # print("찾..
-
[개념] BFS/DFS + [백준] 미로탐색카테고리 없음 2025. 2. 28. 21:00
1. DFS, 깊이 우선 탐색[1] 탐색 시작 노드(1)을 방문 처리 & 스택에 삽입-> dfs(graph,1,visited) 호출[2] 스택에서 pop()한 노드를 기준으로, 방문하지 않은 인접노드가 있다면 인접 노드를 방문 후 push. 방문하지 않은 인접 노드가 없다면 스택에서 pop()[1],[2] 반복 그래프를 나타내는 방법 2가지➀ 인접 행렬➁ 인접 리스트➀ 인접 행렬INF=999999999 #무한의 비용graph=[ [0,7,5], [7,0,INF], [5,INF,0]]➁ 인접 리스트graph=[[] for _ in range(3)]#연결된 노드만 (노드 번호,거리)로 추가graph[0].append((1,7))graph[0].append((2,5))graph[1].append((..
-
[개념] 그리디 + [프로그래머스] 큰 수 만들기코테공부 2025. 2. 28. 16:37
그리디 알고리즘은 "현재 상황에서 지금 당장 좋은 것만 고르는 방법"을 의미한다.그리디는 사전에 외우고 있지 않아도 풀 수 있는 가능성이 높은 문제 유형그냥 머리로 풀어야됨 방법 X 예제 1) 거스름돈Q. N원을 거슬러 줄 때 최소 동전 개수로 거슬러 줘야한다. 동전 종류는 500,100,50,10 무한개A. 가장 큰 화폐 단위부터 거슬러 주면 최소 개수 동전으로 거슬러줄 수 있음 test case ① N=1260 step1) 500원짜리로 거슬러 줄 수 있는 돈 => 500*2개 (1000원)step2) 100원짜리로 거슬러 줄 수 있는 돈 => 100*2개 (200원)step3) 50원짜리로 거슬러 줄 수 있는 돈 => 50*1개 (50원)step4) 10원짜리로 거슬러 줄 수 있는 돈 => 10*1..
-
[프로그래머스] 문자열 압축코테공부 2025. 2. 27. 15:20
핵심 💡- 숫자 크지않으므로 슬라이싱 케이스 전부 탐색해도 됨- 문자열 길이의 ½ 보다 큰 값으로 슬라이싱하면 압축이 안됨 🔜 len(s)//2 만큼만 for문 돌리기- 차례대로 슬라이싱하는 for문 작성시 slicingNum만큼 idx건너뛰기 🔜 for idx in range(slicingNum, len(s), slicingNum)- 첫 시도는 슬라이싱한 문자를 deque에 담았다가 꺼내면서 같은지 체크했지만, 바로바로 비교 가능 def solution(s): answer = len(s) resultStr="" if answer==1: return 1 for slicingNum in range(1,len(s)//2+1): resultSt..
-
[백준 16926번] 배열 돌리기 1코테공부 2025. 2. 27. 13:00
핵심 💡① layer는 행과 열의 최소값 중 2로 나눈 몫 (Layer의 윗변이 될 수 있는 줄을 고른다고 생각하기)② 2차원을 1차원 배열로 생각해서 쭉 늘어뜨림③ Rotation 횟수 최적화 (ex. R이 10인데, 회전시킬 Array의 길이가 9라면 1번 회전한거랑 같으므로 mod연산 활용)④ 늘어뜨렸던 1차원 배열을 2차원 배열에 저장import sys input=sys.stdin.readline N, M, R = map(int, sys.stdin.readline().split())arr2= [list(map(int, input().rstrip().split())) for _ in range(N)]layers=min(N,M)//2for layer in range(layers): top,left..
-
[백준] 누적합구하기코테공부 2025. 2. 7. 11:14
https://www.acmicpc.net/workbook/view/18058 2851 슈퍼마리오입력값이 10개 주어질때, 누적하면서 100과 가장 가까울때 멈추고 합이 무엇인지 반환해야함.만약 97, 103이라면 더 큰 수인 103을 반환입력:123581321345589import sys input=sys.stdin.readline myArr=[]for _ in range(10): my_input=int(input().rstrip()) myArr.append(my_input)prefix_sum=[0 for _ in range(11)]#누적합 배열 생성for i in range(1,11): prefix_sum[i]=prefix_sum[i-1]+myArr[i-1]#문제: prefix_sum 배열에서 100..