일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- C++
- 핑거스타일
- C
- pytorch
- OpenCV
- Selenium
- Python
- windows forms
- YOLO
- pandas
- LIST
- label
- JSON
- 기타 연주
- C#
- 명령어
- SSH
- ubuntu
- Docker
- Visual Studio
- 오류
- Linux
- 프로그래머스
- mysql
- pip
- paramiko
- Numpy
- VS Code
- 채보
- error
- Today
- Total
목록프로그래머스 (13)
기계는 거짓말하지 않는다
프로그래머스 - 우박수열 정적분 문제입니다. 자연수 k와 범위(ranges)가 주어지면 해당 범위 넓이를 리턴하는 문제입니다. 범위가 같거나 유효하지 않은 구간이 주어지는 경우도 있습니다. 문제의 콜라츠 추측대로 값들을 구하고, x축 길이가 1인 구간들의 넓이를 구합니다.(위 예시는 다섯 구간) 그 후 주어진 범위(ranges)의 넓이 합들을 리턴합니다. def solution(k, ranges): answer = [] point_list = [] point_list.append(k) # 콜라츠 추측 계산 while k != 1: if k % 2 == 0: k = int(k / 2) else: k = (k * 3) + 1 point_list.append(k) range_area = [] # 구역 넓이 계..
프로그래머스 - 다음 큰 숫자 문제입니다. 주어진 자연수를 2진수로 변환했을 때, 1의 개수가 같고 주어진 자연수 보다 큰 숫자를 찾으면 됩니다. 주어진 자연수 보다 1 더 큰 숫자 부터 확인을 시작하고, 비트 연산자로 1을 왼쪽으로 밀면서 AND 연산하여 2진수 1의 개수를 확인합니다. #include #include using namespace std; int solution(int n) { int answer = n;// 주어진 자연수 보다 1 더 큰 숫자로 시작해야 함 int i, n_cnt = 0, bit_check = 1, check_cnt = 0; while(bit_check
늦게 작성하는 후기입니다.알고리즘 3문제, SQL 1문제로 구성되어 있었습니다. 프로그래머스 기준 Level 2~3 정도의 수준이었고SQL 문제는 그 보다 더 높았던 것 같습니다. 정렬, 문자열 조작, 우선순위 큐 등을 활용한 문제들이 나왔었습니다.총 2시간이 주어지고 부정행위 방지를 위해 폰으로 실시간 영상 촬영과 문제를 풀고 있는 화면 공유를 해야 합니다.종이와 펜을 사용할 수 있었고 그 외에는 아무것도 할 수 없었습니다.알고리즘 2문제, SQL 문제를 풀고 35분가량이 남았고 마지막 문제를 풀다 종료되었습니다. 문제 연습 기간이 길지 않았지만 한 번 해보고 싶었습니다.운이 좋게도 작성한 코드가 한 번에 통과를 했었고, 그 덕에 집중을 잘 할 수 있었습니다.합격은 했지만 아직 부족하다 느꼈습니다. 좋..
프로그래머스 - 프린터 문제입니다. 우선순위가 가장 높은 목록 부터 차례대로 꺼내야 하고 location이 자신이 요청한 문서의 위치이므로 priorities 배열에서 가장 높은 순서대로 출력해야 합니다. priorities 를 정렬하면 index 위치가 섞이기 때문에 처음 index와 우선순위를 알고 있어야 합니다. 가장 초기의 인덱스와 우선순위를 함께 큐에 저장하고 우선순위 배열을 정렬합니다. 큐에서 가장 앞 데이터의 우선순위가 처음 출력되어야 하는 우선순위 보다 낮다면 큐의 가장 뒤로 보냅니다. 현재 출력되어야 하는 우선순위와 큐의 가장 앞에 있는 우선순위가 같다면 출력하고 answer를 1 더합니다. 이때 location의 인덱스와 같다면 정답이 됩니다. #include #include #incl..
프로그래머스 - n진수 게임 문제 입니다. 0부터 시작되는 수를 2~16진수로 바꿔줄 수 있으면 됩니다. 10진수를 n진수의 n으로 나눈 나머지를 n진수에 맞게 문자열로 변환하면 됩니다. 이 문자열에서 자신의 순서와 같은 문자를 정답에 추가합니다. 게임에 참가하는 인원이 m이므로 m으로 나눈 나머지의 +1이 자신의 순서가 됩니다. #include using namespace std; string convertNum(int n) {// 나머지를 n진수에 맞게 변환 switch(n) { case 10: return "A"; case 11: return "B"; case 12: return "C"; case 13: return "D"; case 14: return "E"; case 15: return "F";..
프로그래머스 - 더 맵게 문제 입니다. 우선순위 큐를 이용하여 min heap을 만듭니다. pop을 두 번 하면 가장 낮은 스코빌 지수 2개를 꺼내올 수 있습니다. 문제의 새로운 스코빌을 만드는 공식 대로 계산하여 다시 큐에 넣는 과정을 반복합니다. 최종적으로 큐가 비거나 top의 원소 값이 K 보다 높으면 모든 원소가 K 보다 높다는 것을 보장할 수 있으므로 반복문을 종료합니다. 반복문 종료 후 top이 K 보다 낮다면 -1을 리턴합니다. #include #include #include using namespace std; struct compare { bool operator()(int a, int b) {// min heap return a > b; } }; int solution(vector sc..
프로그래머스 - 올바른 괄호 문제 입니다. 괄호가 열리고 나면 무조건 닫혀야 올바른 괄호가 된다는 것만 숙지하면 됩니다. 열린 괄호를 하나씩 판별 하면서 개수를 더하다가 닫힌 괄호를 만나면 개수를 빼줍니다. 열린 괄호 개수가 음수가 되면 잘못 된 것이고, 판별이 끝났을 때 양수이면 열린 개수보다 닫힌 개수가 적은 경우입니다. (ex: ((()) ) 판별이 끝난 후 개수가 0개이면 맞는 경우이므로 true를 리턴합니다. #include using namespace std; bool solution(string s) { int open = 0; for(int i = 0; i < s.length(); i++) { if(s[i] == '(') open++; else { open--; if(open < 0) br..
프로그래머스 - 등굣길 문제 입니다. 주의사항은 행, 열이 반대라는점과 시작 지점이 [0, 0]가 아닌 [1, 1] 입니다. 오른쪽과 아래로만 움직인다면 최단 경로는 어떻게 가더라도 동일합니다. cost에 대한 것을 배제하고 경우의 수만 따지면 됩니다. 첫 번째 행과 열을 1로 만들어 주되, 물이 잠긴 곳의 뒷 부분 부터는 갈 수 없으므로 0으로 만듭니다. 그 후 [2, 2] 부터 경로의 갯수를 합산합니다. #include #include #include using namespace std; bool cmp(vector a, vector b) {// 내림차순 정렬 if(a[0] != b[0]) return a[0] > b[0]; else return a[1] > b[1];// 행이 같으면 열로 정렬 } ..