본문 바로가기

분류 전체보기

(107)
프로그래머스 숫자의 표현(lv2, python) https://school.programmers.co.kr/learn/courses/30/lessons/12924 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 접근 주어진 수 이하의 연속된 자연수의 합으로 주어진 수를 표현할 수 있는 경우의 수를 모두 구하는 문제 아이디어 n이 10,000(10^4)이하 이므로 대충 O(n^2) 이하의 시간복잡도면 풀 수 있겠다 판단함 이중 for문으로 완전탐색해주면 시간복잡도상 애매한데, 정답이 구해지는 경우랑 정답이 나올 수 없는경우 break를 걸어주면 충분히 가능하겠다 싶어서 구현시작 정답 코드 def so..
프로그래머스 최솟값 만들기(lv2, Python) https://school.programmers.co.kr/learn/courses/30/lessons/12941 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 분석 길이가 같은 두 배열의 원소를 하나씩 뽑아 곱하는 걸 배열 길이만큼 반복해 각각의 결과를 더함 더한 결과값이 최소가 되는 경우를 구하는 문제 아이디어 처음엔 탐색문제라 생각해서 모든 경우를 다 구해서 최솟값을 구하려했음...-> 구현 복잡하고 비효율적 다른 사람 풀이보니 두 배열을 오름차, 내림차순 정렬해서 각 인덱스끼리 곱했음-> 문제 원리 파악해서 구현 정답코드 def solutio..
프로그래머스 올바른 괄호(lv2, Python) https://school.programmers.co.kr/learn/courses/30/lessons/12909?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 접근 괄호가 문자열로 주어졌을 때 해당 괄호가 올바르게 되어있는지 판별하는 함수를 만드는 문제 아이디어 문자열을 하나씩 탐색하는데 여는괄호가 나오면 큐에 저장하고 닫는괄호가 나오면 하나씩 큐에서 제거하는 방식 -> 시간초과 문자열을 하나씩 탐색하는데 여는괄호가 나오면 스택에 저장하고 닫는괄호가 나오면 하나씩 스택에서 제거하는 방식 -> 성공? 큐를 활용한 풀이 ..
프로그래머스 - 소수찾기 (Python) https://school.programmers.co.kr/learn/courses/30/lessons/42839?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 접근 한자리 숫자가 적힌 카드들을 조합해서 만들 수 있는 소수의 개수를 구하는 문제 아이디어 주어진 카드로 수를 만들어 set에 저장하기(중복을 피하기 위함) set에 넣기전에 에라토스테네스(소수 판별 알고리즘)의 체를 활용해서 소수만 넣기 완성된 set의 개수 리턴하기 코드 myset = set() def solution(numbers): dfs('',numb..
프로그래머스 최소 직사각형(lv1, python) https://school.programmers.co.kr/learn/courses/30/lessons/86491 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 분석 주어진 크기의 명함들을 모두 수납할 수 있는 명함지갑의 최소 크기를 구하는 문제 일반적으로 생각하면 명함들의 가로세로 길이의 최대값을 곱해주면 되지만 명함은 회전이 가능하다. 아이디어 어차피 카드를 돌린다면 더 큰 쪽을 가로, 짧은 쪽을 세로라고 생각하였다. 두 리스트( maxW, maxH)를 만들어 주어진 명함들의 가로, 세로 중 큰 값을 maxW에 넣고, 작은 값을 maxH에 넣었다..
프로그래머스 lv2 괄호 회전하기(kotlin) https://school.programmers.co.kr/learn/courses/30/lessons/76502 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 접근 문자열을 회전시켜가며 괄호가 올바르게 되어있는지를 확인하는 문제 괄호가 올바르게 되어있는지를 확인하는 함수를 따로 만들어서 처리하였다. 다만 반례가 응근 많이나와서 반례가 안나올때까지 조건을 하나하나 추가해주었다.... 정답코드 class Solution { var list = mutableListOf() fun solution(s: String): Int { var answer: In..
백준 14501- 퇴사(kotlin) https://www.acmicpc.net/problem/14501 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net 문제 접근 주어진 날짜안에 상담을 진행하여 얻을 수 있는 최대 수익을 구하는 문제이다. 전체 날짜를 1일찍 상담을 할지말고 선택하는 dp문제인것 같다. 각 날짜에 상담을 진행할지말지를 선택할 수 있고 전체 날짜를 n이라 했을 때 시간 복잡도는 O(2^n)(1
백준 9095번 - 1, 2, 3 더하기 https://www.acmicpc.net/problem/9095 9095번: 1, 2, 3 더하기 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. www.acmicpc.net 문제 접근 주어진 정수를 1,2,3의 합으로 나타내는 경우의 수를 구하는 문제 주어진 정수를 1,2,3으로 쪼개는 경우의 수 :: 재귀를 통해 구현 재귀함수의 구성요소는 다음과 같다. 1. 다음 경우를 호출 2. 정답을 찾은 경우 return 3. 불가능한 경우 return(문제의 조건을 위배한 경우, 절대로 답을 구할 수 없는 경우) 정답 코드 import java.util.Scanner fun main(args: Array): Unit = with(Scanner(System.`in`)) { ..