일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Java
- 시애틀
- Spring Framework
- 다이나믹프로그래밍
- 스타벅스
- 파이썬
- 라인플러스
- C/C++
- spring
- 스프링 프레임워크
- jvm
- 라인
- binary search
- 알고리즘
- 딥러닝
- 프로그래밍언어론
- leetcode
- 머신러닝
- 모두를 위한 딥러닝
- 백트래킹
- dfs
- 벤쿠버
- 릿코드
- BFS
- 백준
- 프로그래머스
- Python
- C++
- DP
- STL
- Today
- Total
목록프로그래머스 (11)
케이스윔의 개발 블로그
문제릴레이션을 나타내는 문자열 배열 relation이 매개변수로 주어질 때, 이 릴레이션에서 후보 키의 개수를 return 하도록 solution 함수를 완성하시오.문제 출처: 프로그래머스(https://programmers.co.kr/learn/courses/30/lessons/42890) 풀이이 문제도 지난 하반기 때 못풀었었는데 그 당시 생각했었던 방법으로 새로 풀었습니다. 후보키는 유일성과 최소성을 만족해야하기 때문에 가능한 모든 조합을 구한 다음 각 조합이 유일성과 최소성을 만족하는지 그대로 구현해서 확인하면됩니다. 당시에는 그 모든 조합을 확인할 수 있을지에 대한 의문이 있어서 다른 문제를 먼저 풀었던 것 같은데 다시 풀면서 조건을 보니 최대 column의 수와 row 수가 작기 때문에 모든 ..
문제트리를 구성하는 노드의 x, y 좌표들이 주어질 때 규칙에 맞게 이진트리를 그리고 전위 순회와 후위 순회 결과를 출력하시오.문제 출처: 프로그래머스(https://programmers.co.kr/learn/courses/30/lessons/42892) 풀이이 문제는 지난번 하반기 채용 당시 풀어야했던 문젠데 못 풀었던! 문제였습니다. 오늘은 오랜만에 프로그래머스에 들어갔다가 이 문제를 골랐는데 풀 수 있는 방법이 떠올라서 풀었습니다! 처음에 이 문제를 봤을 때는 좌표가 x, y로 주어지는데 이진트리로 표현하기 위한 방법이 떠오르지않아서 못풀었는데 오늘은 우선순위큐를 이용하면 풀 수 있겠다는 생각이 들었습니다. y좌표가 높을수록, x좌표가 작을수록 우선순위큐를 만들어주면 가장 위에서 부터 차례대로 각 ..
문제레이저, 쇠막대기를 표시하는 string이 들어올 때 레이저에 의해 잘리는 쇠막대기의 개수를 구하시오.문제 출처: 프로그래머스(https://programmers.co.kr/learn/courses/30/lessons/42585) 풀이문제가 레벨2인데도 처음에 보고는 좀 어렵다고 생각했습니다. 근데 매우 간단한 문제였습니다! '('와 ')'가 연속으로 들어올 때에는 레이저를 쏜 것이고 아닐 때의 '('는 쇠막대기의 시작, ')'는 쇠막대기의 끝을 의미합니다. 쇠막대기가 들어오면, 즉 '('이면 스택에 쌓아줍니다. 쇠막대기가 끝나면=')'이면 스택에서 pop해줍니다. 이러한 과정에서 '('와 ')'이 연속으로 들어오면, 레이저를 쏘게되면 그 때 쌓여있는 스택의 사이즈만큼 쇠막대기가 생겨납니다. answ..
문제 파일명에 포함된 숫자를 반영하여 정렬하는 프로그램을 구현하시오.문제 출처: 프로그래머스(https://programmers.co.kr/learn/courses/30/lessons/17686) 풀이파일명이 주어지면 head, number, tail로 나눈 다음 정렬을 통해 쉽게 구할 수 있는 문제였습니다. head에는 숫자가 포함되지 않기 때문에 숫자가 나오는 순간부터는 number 영역이고, char로 입력된 number 영역은 int형으로 바꿔줘야합니다. head와 number를 구하고 input에서 해당 input의 인덱스와 함께 구조체로 vector에 넣어주었습니다. index를 구조체에 넣은 이유는 stable하게 정렬하기 위해서, 값을 편하게 고쳐서 구조체에 넣기 때문에(전부 소문자로 바꾸..
문제숫자를 0부터 시작해서 차례대로 주어진 진법으로 한개씩 말하는 게임에서 튜브가 말해야하는 숫자들을 구하시오.문제 출처: 프로그래머스(https://programmers.co.kr/learn/courses/30/lessons/17687) 풀이주어진 규칙에 따라 게임을 할 때 튜브가 말해야할 t번의 숫자를 알아내야합니다. m(인원)*t-1 + p번 반복문을 통해 해당하는 차례에 숫자를 구해봅니다. 우선 어떤 진수를 사용할 지 모르기 때문에 반복문 i가(i는 튜브가 말해야하는 가장 마지막 숫자까지 돕니다.) 돌고 있다면 j를(j는 10진법으로 표현된 돌아가고 있는 숫자) 0부터 시작해서 주어진 진법에 맞게 고쳐주고 고친 숫자를 한칸씩 잘라서 i++ 해줍니다. 풀다보니 반복문이 m(인원)*t-1 + p번 돌..
문제판이 주어지면 상하좌우 네 칸이 같으면 해당 칸은 사라지고 아래로 남은 블록들이 떨어진다. 지워지고 떨어지고를 반복할 때 지워지는 블록의 개수를 구하시오.문제 출처: 프로그래머스(https://programmers.co.kr/learn/courses/30/lessons/17679) 풀이이 문제는 처음에 풀다가 이렇게 풀면 안될 것 같은데?하는 생각에 잠시 접어뒀던 문제인데 생각나서 다시 풀어봤습니다. 4칸이 같으면 해당 칸이 지워지고 남은 블록들을 아래로 떨어지게 해야합니다. BFS를 통해서 블록이 존재하는 판을 탐색하다가 상하좌우가 같으면 지우기 위한 리스트에 추가해줍니다. BFS 탐색이 끝나면 지워야하는 리스트를 지우며 지워지는 블록의 카운트를 세줍니다. 4칸 2개가 6개처럼 중첩되어 있을 경우가..
문제주어진 string을 LZW 압축한 후 색인 번호를 출력하시오.문제 출처: 프로그래머스(https://programmers.co.kr/learn/courses/30/lessons/17684) 풀이어렵게 보였지만 꽤 간단하게 풀린 문제였습니다.(근데 이 문제의 정답률이 무려 95.80%.. 3차까지 가신 분들은 대단해..) LZW 압축 알고리즘을 구현하는 문제인데 저는 처음 들어보는 알고리즘이었지만 설명이 친절하게 적혀있어서 하나씩 따라서 풀어가면 됩니다. 사전을 이용하라는 말에 바로 map을 이용해야겠다고 생각했습니다. 주어진 문자열 msg의 에서 제일 첫 문자에서 시작합니다. 첫 문자는 한글자이기 때문에 당연히 색인에 존재할 것입니다. 이후부터는 색인에 속하는 가장 긴 문자열 w를 찾는 부분과 w를..
문제셔틀버스의 횟수, 간격, 줄을 기다리는 대기열의 배열이 주어졌을 때 셔틀버스를 탈 수 있는 도착 시각 중 가장 늦은 시각을 구하시오.문제 출처: 프로그래머스(https://programmers.co.kr/learn/courses/30/lessons/17678) 풀이처음에 문제를 보고 쉽다고 생각이 들었지만 예제를 보니 꽤 어렵게 느껴졌습니다. 풀고나니 쉬운 문제였고 방금 풀었던 기억을 정리해보니 처음에 더 정리해서 풀었다면 빨리 풀었을 거라는 생각이 들었습니다. 우선 처음엔 어떻게 마지막 셔틀을 탈 수 있는 시간을 구할지 생각해보며 string으로 들어오는 timetable을 숫자로 바꾸는 작업을 했습니다. 09:00 와 같이 들어오기 때문에 hour = (timetable[i][0]-'0')*10 ..