본문 바로가기
반응형

코딩테스트94

[백준 2503] 숫자야구 (자바) 백준 2503번: 숫자야구문제 설명숫자야구 게임은 상대방의 숫자를 맞추는 게임입니다. 상대방은 1부터 9까지 서로 다른 세 숫자를 정하고, 우리는 그 숫자를 맞추기 위해 시도합니다. 각 시도마다 다음과 같은 정보를 받습니다:스트라이크: 자리와 숫자가 모두 맞는 경우볼: 숫자는 맞지만 자리가 틀린 경우주어진 시도와 결과를 바탕으로 가능한 모든 경우의 수를 계산하는 문제입니다.문제 접근 방법1부터 9까지의 숫자 중 세 개를 중복 없이 선택합니다.각 선택된 숫자가 주어진 조건을 만족하는지 확인합니다.모든 조건을 만족하는 숫자 조합의 수를 계산합니다.시간 복잡도 분석O(N * 504)이 문제는 1부터 9까지의 숫자 중 세 개를 중복 없이 선택하는 모든 경우를 확인해야 합니다. 따라서 가능한 조합의 수는 9P3 .. 2024. 6. 29.
[백준 19532] 수학은 비대면 강의입니다. BOJ 19532: 수학은 비대면강의입니다 - 풀이문제 설명백준 온라인 저지의 문제 19532번 "수학은 비대면강의입니다"는 연립방정식을 푸는 문제입니다. 두 개의 1차 방정식이 주어졌을 때, 그 해를 구하는 문제입니다.주어진 방정식은 다음과 같습니다:( ax + by = c )( dx + ey = f )여기서 ( a, b, c, d, e, f )는 정수로 주어집니다. 우리는 이 방정식을 만족하는 ( x )와 ( y )를 찾아야 합니다. 모든 입력값은 -999부터 999 사이의 정수입니다.문제 접근 방법이 문제는 두 개의 1차 방정식을 만족하는 ( x )와 ( y )를 찾는 문제입니다. 이를 위해 이중 반복문을 사용하여 가능한 모든 ( x )와 ( y ) 값을 대입하여 해를 찾는 방식으로 접근할 수 있습.. 2024. 4. 21.
[백준 14568] 2017_연세대학교_프로그래밍_경시대회 (자바) package week_01; import java.io.*; public class BOJ_14568_2017_연세대학교_프로그래밍_경시대회 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); int answer = 0; for (int a = 1; a < n + 1; a++) { for (int b = 1; b < n + 1; b++) { for (int c = 1; c < n + 1; c++) { if (a + b + c == n && a.. 2024. 4. 11.
[백준 1816] 암호키 (자바) package week_01; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class BOJ_1816_암호_키 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); // 테스트 케이스의 수 입력 long[] S = new long[n]; // 테스트 케이스의 암호를 저장할 배열 생성 // 암호들을 배열에 저장 fo.. 2024. 4. 7.
[프로그래머스] 게임 맵 최단거리(level2) (자바) package com.programmers; import java.util.LinkedList; import java.util.Queue; /** * https://programmers.co.kr/learn/courses/30/lessons/1844?language=java * 방문 처리를 해버리면 다른 루트에서 접근할 때 도착하지를 못한다. bfs일 경우 최단 거리로 갈 수 있기 때문에 방문처리를 false로 바꿀 일이 필요 없다. */ public class 게임맵_최단거리 { public static void main(String[] args) { int[][] maps = { {1, 0, 1, 1, 1}, {1, 0, 1, 0, 1}, {1, 0, 1, 1, 1}, {1, 1, 1, 0, 1}, .. 2021. 11. 14.
[프로그래머스] N개의 최소공배수 (자바) 문제 풀이 유클리드호제(최대공약수) 알고리즘을 활용하여 풀 수 있다. package com.programmers; /* 문제 설명 두 수의 최소공배수(Least Commontem Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배수는 n 개의 수들의 배수 중 공통이 되는 가장 작은 숫자가 됩니다. n개의 숫자를 담은 배열 arr이 입력되었을 때 이 수들의 최소공배수를 반환하는 함수, solution을 완성해 주세요. 제한 사항 arr은 길이 1이상, 15이하인 배열입니다. arr의 원소는 100 이하인 자연수입니다. 입출력 예 arr result [2,6,8,14] 168 [1,2.. 2021. 10. 17.
[프로그래머스] 큰 수 만들기 (level2) (자바) 문제 풀이 문제를 잘 파악하는 것이 중요하다. 힙소트(오답) -> 조합(시간초과) -> 풀이(그리디)를 보고 문제를 풀 수 있었다. package com.programmers; import java.util.PriorityQueue; import java.util.Queue; /** * 문제 설명 * 어떤 숫자에서 k개의 수를 제거했을 때 얻을 수 있는 가장 큰 숫자를 구하려 합니다. * * 예를 들어, 숫자 1924에서 수 두 개를 제거하면 [19, 12, 14, 92, 94, 24] 를 만들 수 있습니다. 이 중 가장 큰 숫자는 94 입니다. * * 문자열 형식으로 숫자 number와 제거할 수의 개수 k가 solution 함수의 매개변수로 주어집니다. number에서 k 개의 수를 제거했을 때 만들.. 2021. 10. 17.
[프로그래머스] 야근 지수 (level3) (파이썬) 문제 접근 정렬 된 최대 값이 필요하므로 우선순위큐로 표현해야 된다고 생각하였다 가장 빠른 삽입 삭제 시간복잡도 N(데이터) logN을 가진 힙(heap)을 이용하여 문제를 접근 풀이 코드 # 19:10 ~ 19:30 # https://programmers.co.kr/learn/courses/30/lessons/12927?language=python3# import heapq def solution(n, works): answer = 0 h = [] # 우선순위 큐 최대힙으로 저장 for value in works: heapq.heappush(h, -value) while n > 0: # 힙에서 하나 꺼내어 다시 넣음 work = -heapq.heappop(h) if work != 0: heapq.hea.. 2021. 6. 28.
[프로그래머스] 더 맵게 (level2) (파이썬) 문제 접근 힙의 특징을 이용하여 문제를 푼다. 문제 해결 # 09:30 ~ 09:55 # https://programmers.co.kr/learn/courses/30/lessons/42626?language=python3 # 정렬 시간 복잡도 NlogN, 삽입 삭제 logN # heapq.heappush() 삽입 # heapq.heappop() 꺼냄 import heapq def solution(scoville, K): # 모든 음식의 스코빌 지수를 K이상으로 만들 수 없는 경우 -1 return answer = -1 count = 0 flag = True h = [] for value in scoville: heapq.heappush(h, value) # pop 하면서 스코빌 지수와 체크 하며 섞을지 .. 2021. 6. 28.
[프로그래머스 ] 짝지어 제거하기 (level2) (파이썬) 문제 접근 스택에 쌓으면서 짝이 지어지면 바로바로 제거하는 방식을 선택하였다 풀이 코드 # https://programmers.co.kr/learn/courses/30/lessons/12973?language=python3 # 9:40 ~ 09:52 def solution(s): answer = -1 stack = [] for i in s: if len(stack) != 0: if stack[-1] == i: stack.pop() else: stack.append(i) else: stack.append(i) if len(stack) == 0: answer = 1 else: answer = 0 return answer 2021. 6. 21.
[프로그래머스] Summer/Winter Coding(~2018) 소수 만들기 (파이썬) 문제 접근 소수의 판별을 할 줄 알면 풀 수 있던 문제 에라토스테네스의 체를 기억하자 2021.03.08 - [Problem-solved (코딩테스트 문제풀이)/python] - [백준] 소수 구하기 1929 (파이썬) # Summer/Winter Coding(~2018) 소수 만들기 import math from itertools import combinations def solution(nums): # 에라토스테네스의 체를 이용하여 해당 범위의 소수를 판별한다. # 1~1000 사이의 자연수를 3개 고르므로 단순히 합의 최대값을 3000이라고 설정하였다 n = 3000 array = [True for i in range(n+1)] for i in range(2, int(math.sqrt(n) + 1).. 2021. 6. 18.
[프로그래머스] [Sql] [Oracle] 헤비 유저가 소유한 장소 (level3) https://programmers.co.kr/learn/courses/30/lessons/77487 코딩테스트 연습 - 헤비 유저가 소유한 장소 PLACES 테이블은 공간 임대 서비스에 등록된 공간의 정보를 담은 테이블입니다. PLACES 테이블의 구조는 다음과 같으며 ID, NAME, HOST_ID는 각각 공간의 아이디, 이름, 공간을 소유한 유저의 아이디를 programmers.co.kr 2021 Dev-Matching: 웹 백엔드 개발자(상반기) 기출문제이다. 지난 번에 참여했을 때 풀었었는데 다시한번 풀어보았다. JPA를 사용하면서 sql을 직접 다루지 않다보니 많이 까먹긴 하였다. 내가 푼 풀이 (Group by + Subquery) select A.id, A.name, A.host_id fr.. 2021. 6. 14.
[프로그래머스] 예상 대진표(level 2) (파이썬) 문제 접근 수학 문제 a,b 중 b가 큰것이 보장된다면 둘이 만나는 경우는 b가 2의 지수이면서 b - 1이 a일 때 뿐이다. 코드 # 13:45 ~ 14:10 import math def solution(n,a,b): if a > b: a, b = b, a cnt = 1 while True: if b % 2 == 0 and b - a == 1: break a = math.ceil(a/2) b = math.ceil(b/2) cnt += 1 return cnt 노트 2021. 5. 19.
[프로그래머스] 위장(level 2) (파이썬) 접근 경우의 수를 잘 생각해야 하는 문제 최소한 1개의 옷을 입어야 하므로 모두 안입은 경우를 -1 해야 한다. 각각의 경우의 수에서 옷의 종류는 독립변수로 작용한다. # 위장 level2 # 3시 57분 ~ 4시 43분 # 경우의 수 문제 종류가 2인 경우 00, 10, 01, 11 2*2 -1(00) def solution(clothes): answer = 1 hmap = dict() for i in range(len(clothes)): if clothes[i][1] in hmap.keys(): hmap[clothes[i][1]] = hmap[clothes[i][1]] + 1 else: hmap[clothes[i][1]] = 1 value_list = hmap.values() for value in .. 2021. 5. 18.
[프로그래머스] 다음 큰 숫자(level 2) (파이썬) 접근 2진수로 변환 하는 함수를 알아야했다 (bin이나 format 방식을 이용한다) 숫자를 하나 씩 늘려가며 일치할 시에 반복문을 빠져나오면 된다. # 다음 큰 숫자 # https://programmers.co.kr/learn/courses/30/lessons/12911 # 3시 8분 - 3시 25분 (17분) def solution(n): b_origin = str(format(n, 'b')) b_count = b_origin.count('1') num = n while True: num += 1 v = str(format(num, 'b')) if v.count('1') == b_count: return num def solution2(n): cnt = format(n, 'b').count('1') .. 2021. 5. 18.
반응형