📑 1. 문제설명Write a function to find the longest common prefix string amongst an array of strings.If there is no common prefix, return an empty string "".Note: All given inputs are in lowercase letters a-z. a-z의 소문자 알파벳으로 단어들로 구성된 배열이 주어졌을 때, 모든 문자열에 공통되는 가장 긴 접두사를 리턴하라. 접두사가 없는 경우에는 빈 문자열을 리턴하라. Example 1Input: ["flower","flow","flight"] Output: "fl" Example 2Input: ["dog","racecar","car"] Output..
📑 1. 문제설명 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr💡 2. 풀이 과정이 문제는 queue 로 푸는 문제이다 (이걸 유추할 수 있는 부분)card1과 card2는 무조건 앞부터 사용해야 함순서를 뒤바꿀 수 없음이 두 문장은 FIFO 구조를 나타낸다.그래서 card1, card2, goal 을 큐를 사용해서 관리 가능하다. card1과 card2, goal을 큐로 변환한다.goal의 front와 (card1 또는 card2)의 front의 값을 비교한다.사용할 수 있는 카드가 있는가? (값이 같으면 사용 가능)Yes이면 해당 큐와 goal에서 각각 poll, 그렇지 않으면 No를 반환한다..
📑 1. 문제설명✅ 문제 이문제는 유대인 역사가 플라비우스 요세푸스가 만든 문제이다. N명의 사람이 원 형태로 서 있다. 각 사람은 1부터 N까지 번호표를 갖고 있다. 그리고 임의의 숫자 K가 주어졌을 때 다음과 같이 사람을 없앤다.1번 번호표를 가진 사람을 기준으로 K번째 사람을 없앤다.없앤 사람 다음 사람을 기준으로 하고 다시 K번째 사람을 없앤다.N과 K가 주어질 때 마지막에 살아 있는 사람의 번호를 반환하는 solution() 함수를 구현해주세요 ✅ 제약조건N과 K는 1이상 1000이하의 자연수이다. ✅ 입출력 예NKreturn523 💡 2. 풀이 과정입출력 예를 그대로 그림으로 구현하려고 한다.N = 5, K = 2 이고 사람마다 1~5번까지의 숫자를 붙여 원형으로 배치한다.그리고 첫번째 ..
📑 1. 문제설명💡 2. 풀이 과정 문제를 요약하면 토너먼트 게임에서 특정한 번호의 두 참가자가 만날 때 까지 몇 번의 경기를 진행해야 하는지 횟수를 구하는 문제이다. 처음에 참가자들은 1부터 N까지 번호를 받는다.그리고 다음 라운드에 진출한 참가자들은 다시 1부터 N/2 까지의 번호를 받는다. 입출력 예N=8, A=4, B=7 이 경우 8명의 참가자들이 경기를 할 때 4번 선수와 7번 선수가 만날 때까지의 경기 횟수를 아래 그림으로 그려 보았다.각 라운드에서 4번과 7번은 항상 이겨서 다음 라운드로 진출한다고 가정하고 풀어야 하는 문제이다.4번과 7번은 계속 이겨서 다음 라운드로 진출한다4번은 3번을 이기고, 1 또는 2번을 이겨서 총 2번 이긴다7번은 8번을 이기고, 5 또는 6번을 이겨서 총 ..
스택(Stack)개요"스택"은 데이터를 쌓아서 사용하는 자료구조로, "후입선출(LIFO, Last In First Out)" 방식으로 작동한다. 즉, 나중에 들어간 데이터가 먼저 나오는 구조이다. 스택은 주로 함수 호출, 계산기 프로그램에서 수식 계산, 또는 브라우저의 뒤로 가기 기능 등에서 사용된다.* 이와 반대의 "선입선출(FIFO, First In First Out)" 구조의 자료구조를 '큐'라고 한다. 스택을 활용한 코딩테스트 문제는 유형이 정해져 있다. 문제를 잘 읽어보고 데이터를 쌓아 올린다든지, 나중에 쌓은 데이터를 먼저 처리하는 방식이면 스택을 활용하면 된다. 스택을 사용하는 문제 유형 ✅ 괄호 유효성 검사주어진 문자열에서 괄호의 짝이 맞는지 확인하는 문제스택을 사용해 여는 괄호는 스..
📑 1. 문제설명💡 2. 풀이 과정문제 예시처럼 5*5 격자가 있다고 가정 해 보면 격자의 가장 아래 칸부터 인형이 차곡차곡 쌓여 있고, 가장 위에 있는 인형을 집어 올릴 수 있다. 이 문제에서 "집어 올린 인형은 바구니에 쌓이는데 바구니의 가장 아래 칸부터 인형이 순서대로 쌓인다."라는 부분을 보면 스택 문제인 걸 바로 알 수 있다. 게임화면이나 바구니를 스택이라고 생각하면 된다. 문제는 board 배열을 스택으로 변환시키는 것이 어렵다. 만약에 값이 0이 들어오면 빈 칸이기 때문에 스택에 넣지 않는다. 그리고 크레인이 인형을 꺼내는 것은 stack.pop()으로 구현할 수 있다. 인형뽑기 게임 로직 1. 바구니가 빈 경우 -> 무조건 푸시2. 바구니가 비지 않은 경우 2-1. 바구니의 가장 위에..
코테 문제 풀 때 알고리즘이나 자료구조도 공부해야 하지만, 코드를 작성하는 방법도 중요하다.클린 코드를 작성하기 위해서는 아래 세 가지 습관을 들여야 한다.하루 아침에 코드 쓰는 습관이 바뀌지는 않겠지만 매번 코드를 작성할 때마다 이러한 습관을 염두에 두고 작성하다 보면 점차 클린 코드 작성 능력이 향상될 것이라고 기대한다. 1. 조기반환 (early return)조기 리턴(early return)은 조건이 충족되면 함수나 메서드에서 바로 결과를 반환하는 프로그래밍 기법이다. 이렇게 하면 불필요한 계산을 피하고 코드의 가독성을 높일 수 있다.예를 들어, totalPrice 함수에서 가격이 100을 초과하는 경우 바로 할인을 적용하고 결과를 반환하는 코드를 짤 때, 조기 리턴을 하지 않으면 할인 로직을 ..
📑 1. 문제설명💡 2. 접근방식 1. 평일 체크startday를 기준으로 평일(월~금)의 인덱스를 isWeekday 배열에 저장한다. (틀림) - 인덱스가 고정됨startday + j를 통해 현재 요일을 직접 계산해서 startday에 따라 요일이 동적으로 변하게 해야 한다. % 7 연산으로 월금(15)만 검사하고 주말(0,6)은 출근시간 체크에서 제외하도록 한다.2. 직원별 출근 기록 확인schedules[i] + 10을 기준으로 평일의 출근 기록을 확인한다. - 이 때 시간이 60분이 넘어가는 경우 +40을 해서 HHMM맞게 시간이 표시될 수 있도록 정확한 시간 보정을 해 준다. 하나라도 지각한 경우(출근 시각 > 인정 시각), 해당 직원은 상품을 받을 수 없다.모든 평일을 지각하지 않았다면..