본문 바로가기

Server/Algorithm8

신박한 공배수 풀이 기록 Preface가독성이 떨어지지만, 사고력 측면에서 생각하지 못한 방식이어서 기록합니다.문제n,m이 number의 공배수이면 1 아니면 0을 return.풀이둘 다 공배수일 경우나머지가 둘 다 0 이기 때문에 ( 0 | | 0 ) 연산은 false가 됩니다.괄호 바깥 부분의 부정연산자(!)로 인해 true가 됩니다.+ 연산자로 인해 논리연산자 true가 숫자형으로 변환되어 1로 반환됩니다.둘 다 공배수가 아닐 경우각 나머지 연산에서 나머지가 존재하면 0이 아니게 되므로 값이 1 이상이 되어 true가 됩니다.괄호 바깥 부분의 부정연산자(!)로 인해 false가 됩니다.+ 연산자로 인해 논리연산자 false가 숫자형으로 변환되어 0으로 반환됩니다. function getCommonMultiple(number.. 2024. 2. 20.
SQL) 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr *본문에서 테이블에 대한 정보는 생략하도록 하겠습니다. *MySQL로 작성하였습니다. 조건 자동차 종류가 '세단' 또는 'SUV' 인 자동차 중 2022년 11월 1일부터 2022년 11월 30일까지 대여 가능하고 30일간의 대여 금액이 50만원 이상 200만원 미만인 자동차에 대해서 자동차 ID, 자동차 종류, 대여 금액(컬럼명: FEE) 리스트를 출력하는 SQL문을 작성해주세요. 결과는 대여 금액을 기준으로 내림차순 정렬하고, 대여 금액이 같은 경우 자동차 종류를 기준으로 오름차순 정렬, 자동차 종류까지 .. 2023. 5. 18.
[Algorithm] 유형 목록 [분할정복 알고리즘] - 이진 탐색 - 합병 정렬 - 퀵 정렬 - 선택 정렬 [동적 프로그래밍 알고리즘] - 피보나치 수열 문제 - 연쇄 행렬 곱셈 문제 - 스트링 편집 거리 문제 - 모든 정점 간의 최단 경로 - 저울 문제 [탐욕법(욕심쟁이 알고리즘)] - 동전 거스름돈 문제 - 배낭문제 - 최소 신장 트리 - 최단 경로 - 작업 스케줄링 문제 - 작업 선택 문제 - 허프만 코딩 * 탐욕법을 적용해 최소 신장 트리를 구하는 알고리즘 - 프림 알고리즘 - 크루스칼 알고리즘 [정렬 알고리즘] - 버블, 선택, 삽입, 셸, 합병, 퀵, 힙 - 비교 기반 정렬의 하한 - 계수 정렬 - 기수 정렬 [탐색 알고리즘] - 순차, 이진 - 탐색 트리 - 해싱 [근사 알고리즘] - 클래스 P와 클래스 NP - NP-완.. 2022. 6. 11.
[Algorithm] 프로그래머스 레벨2 124나라의 숫자 코딩테스트 연습 - 124 나라의 숫자 programmers.co.kr 10진법 124나라 10진법 124나라 1 1 6 14 2 2 7 21 3 4 8 22 4 11 9 24 5 12 10 41 500,000,000 이하의 자연수 n이 매개변수로 주어질 때, n을 124 나라에서 사용하는 숫자로 바꾼 값을 return해주는 함수를 작성하는 문제입니다. 효율성 테스트 실패 코드 public String failSolution(int n) { String answer = ""; int rest = 0; while(n > 0) { rest = n % 3; n /= 3; if(rest == 0) { rest = 4; n -= 1; } answer = rest + answer; } return answer; }.. 2022. 1. 6.
[Algorithm] Euclidean Algorithm 유클리드 알고리즘에 대해 알아보고, 관련 문제를 해당 알고리즘으로 풀어보도록 하겠습니다. 유클리드 알고리즘, 유클리드 호제법(互除法)이란? 유클리드 호제법(-互除法, Euclidean algorithm) 또는 유클리드 알고리즘은 2개의 자연수 또는 정식의 최대공약수를 구하는 알고리즘의 하나이다. 호제법에 대한 설명은 다음과 같습니다. 두 수가 서로 상대방을 나누어서 결국 원하는 수를 얻는 알고리즘을 나타낸다. 호제법이라는 말은 서로(互) 나누기(除) 때문에 붙여진 이름이다. 이 뜻의 '호제' 라는 단어가 따로 있지는 않다. 다시, 유클리드 호제법 2개의 자연수(또는 정식) a, b에 대해서 a를 b로 나눈 나머지를 r이라 하면(단, a>b), a와 b의 최대공약수는 b와 r의 최대공약수와 같다. 이 성질.. 2021. 11. 7.
[Algorithm] Greedy Algorithm 한빛미디어의 이것이 취업을 위한 코딩테스트다 with 파이썬을 요약 정리했습니다. 그리디 알고리즘이란 - 탐욕 알고리즘, 탐욕법 - 여기서 탐욕적이라는 말은 현재 상황에서 지금 당장 좋은 것만 고르는 방법을 의미한다. 그리디 알고리즘의 특징 - 매 순간 가장 좋아보이는 것을 선택 - 현재의 선택이 나중에 미칠 영향에 대해서는 고려하지 않음 - 사전에 외우고 있지 않아도 풀 수 있을 가능성이 높은 문제 유형 예제문제- 거스름돈 거스름돈으로 사용할 500, 100, 50, 10원짜리 동전히 무한히 존재한다고 가정. 거슬러 줘야 할 돈이 N원일 때 거슬러 줘야 할 동전의 최소 개수를 구하라. (단, 거슬러 줘야 할 돈 N은 항상 10의 배수이다.) 소스코드 - 예제 소스 3-1.py를 자바로 작성하였음 Git.. 2021. 11. 2.
[Algorithm] 신규 아이디 추천 문제 코딩테스트 연습 - 신규 아이디 추천 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 programmers.co.kr 목표 - 아이디 규칙에 맞지 않는 아이디를 입력했을 때, 입력된 아이디와 유사하면서 규칙에 맞는 아이디를 추천 규칙 - 아이디의 길이는 3자 이상 15자 이하여야 합니다. - 아이디는 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.) 문자만 사용할 수 있습니다. - 단, 마침표(.)는 처음과 끝에 사용할 수 없으며 또한 연속으로 사용할 수 없습니다. 조건 - 네오가 설계한 7단계의 순차적인 처리 과정을 거쳐야 함 - 1단계 new_id의 .. 2021. 10. 7.
[Algorithm] 프로그래머스- 로또의 최고 순위와 최저 순위 문제 코딩테스트 연습 - 로또의 최고 순위와 최저 순위 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호 programmers.co.kr 코드 class Solution { public int[] solution(int[] lottos, int[] win_nums) { int zeroCnt = 0; int chkMatched = 0; for(int i : lottos) { if (i == 0) zeroCnt ++; else { for ( int j : win_nums) { if(i == j) { chkMatched++; break; } } } }.. 2021. 10. 5.