본문 바로가기

코딩테스트

(46)
[Python] 2024-1 이퍼 준비(1) # 난이도 1. 행운의 바퀴(완료) https://www.acmicpc.net/problem/2840 2840번: 행운의 바퀴 첫째 줄에 마지막 회전에서 화살표가 가리키는 문자부터 시계방향으로 바퀴에 적어놓은 알파벳을 출력한다. 이때, 어떤 글자인지 결정하지 못하는 칸은 '?'를 출력한다. 만약, 상덕이가 적어놓 www.acmicpc.net # 내 풀이 def solution(n, k): arr = ["null"]*n direct = 0 for i in range(k): # 거꾸로 저장중. 즉, 출력은 왼쪽(반시계)으로 s, eng = input().split() direct = (direct+int(s))%n if (arr[direct]!="null" and arr[direct]!=eng) or eng..
[python] 프로그래머스 도전~ 이퍼 시험이 얼마 남지 않았는데...프로그래머스로 시험을 본다고 한다. 너무 늦게 알았다..! 급하게 계정 만들고 연습 중이다. 백준은 보통 출력 결과를 print하는데, 프로그래머스는 solution 함수를 만들어 결과를 return하는 형식으로 작성한다. 백준 골드면 프로그래머스는 레벨 2~3정도? 기초와 입문 테스트를 할 때는 이렇게 귀여운 스탬프도 준다 ㅋㅋㅋ 이퍼가 얼마 남지 않아서 전까지 이걸 다 끝내지는 못하겠지만, 기출과 알고리즘 고득점 문제로 어느정도 해봐야지... # 회고 회고보다는 기초 해보다가 웃겨서... ㅋㅋ이런 함수도 있구나....좀 웃겼다..
[python] 구현(완전 탐색, 시뮬레이션) # 구현 완전 탐색 : 모든 경우의 수를 다 계산하는 해결 방법 시뮬레이션 : 문제에서 제시한 알고리즘을 한 단계씩 차례대로 직접 수핸하는 문제 알고리즘은 간단하지만 코드가 길거나, 특정 소수점 출력/문자열 다루기 등의 문제가 까다로운 구현 문제이다. 리스트 파이썬에서 리스트를 여러 개 선언하고, 크기가 1,000만 이상인 리스트가 있다면 메모리 용량 제한에 걸릴 위험이 있다. 또한 빠른 입출력 속도까지 고려하여 시간 제한을 염두에 두고 풀어야 한다. int 자료형 데이터 개수에 따른 메모리 사용 데이터의 개수(리스트 길이) 메모리 사용량 1,000 약 4KB 1,000,000 약 4MB 10,000,000 약 40MB # 예제 1. 상하좌우 - NxN 크기의 정사각형 공간에서 (1,1)에 위치한 사람이..
[Python] 우선순위 큐 우선순위 큐는 원소들이 우선순위를 가진다. 힙(완전이진트리)으로 구현가능하다. 삽입, 삭제, get 모두 O(logN) PriorityQueue 혹은Heapq으로 모듈 제공. Heapq이 빨라 많이 사용된다. 둘다 최소힙만 제공하므로 최대힙을 원하면 - 부호 활용하기. import heapq hq = [] heapq.heappush(heap, item) # 힙 형태를 유지하며 heap에 item push heapq.heappop(heap) # 힙 형태를 유지하며 가장 작은 원소 pop. 비어있으면 IndexError from queue import PriorityQueue pq = PriorityQueue() pq.put(1) pq.get() # 1 https://www.acmicpc.net/proble..
[Python] 그리디 # 그리디 알고리즘 현재 상황에서 당장 좋은 것만 고르는 방법 다양한 유형의 문제가 있다. 가장 큰 순서/작은 순서대로와 같은 기준의 정렬 알고리즘에서 많이 사용 # 예제 1. 거스름돈 문제 - 가지고 있는 동전 중(500, 100, 50, 10)에서 가장 큰 단위가 항상 작은 단위의 배수이므로 작은 단위의 동전을 종합하여 다른 해가 나올 수 없다. - 만약 동전의 단위가 (500, 400, 100)이 되는 경우 그리디 X - 그리디 알고리즘은 문제 풀이를 위한 아이디어를 떠올리고 정당한지 검토할 수 있어야 답을 도출할 수 있다. n = 1260 count = 0 # 큰 단위의 화폐부터 차례로 확인 coin_types = [500, 100, 50, 10] for coin in coin_types: cou..
[JAVA] 스택, 큐, 덱 28728 스택 2 import java.io.*; import java.util.Stack; public class Main { static Stack stack = new Stack(); static StringBuilder sb = new StringBuilder(); public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.readLine()); while(N --> 0){ solution(br.readLine()); } br.close(); System.out.pri..
[JAVA] 약수, 배수와 소수 2 1934 최소공배수 유클리드 호제법이란? a와 b의 최대공약수를 gcd(a,b)라 할 때, gcd(a,b) == gcd(b,r)이다. r은 a%b이다. a%b == 0 이라면 gcd(a,b) == b가 될 것이다. 이때까지 위 식을 반복한다. 유클리드 호제법을 이용하여 최대공약수를 구한 후, a*b에 최대공약수를 나누면 최소공배수가 나온다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException {..
[JAVA] 집합과 맵 10815 숫자 카드 이진 정렬문제. left=0, right=n(숫자 카드 arr 의 length) mid = (left+right)/2 arr[mid]와 num을 비교 arr[mid]>num 인 경우, left=mid +1 arr[mid]