일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- OpenCV
- pip
- JSON
- SSH
- label
- 기타 연주
- 오류
- Python
- VS Code
- pytorch
- C++
- Visual Studio
- 명령어
- LIST
- C#
- Selenium
- Docker
- 채보
- 핑거스타일
- pandas
- mysql
- paramiko
- error
- C
- ubuntu
- windows forms
- 프로그래머스
- Numpy
- YOLO
- Linux
- Today
- Total
목록Programming Test (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
프로그래머스 - 프린터 문제입니다. 우선순위가 가장 높은 목록 부터 차례대로 꺼내야 하고 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];// 행이 같으면 열로 정렬 } ..
프로그래머스 - 이진 변환 반복하기 문제 입니다. 문제 그대로 1인 문자 개수를 이진수로 변경하고 0인 문자를 계속 카운트 합니다. 이진수 문자열은 재귀함수를 사용했습니다. #include #include using namespace std; string binaryNumber(int n) { if(n < 2) return to_string(n); return binaryNumber(n / 2) + to_string(n % 2); } vector solution(string s) { vector answer; int zeroCnt = 0, tryCnt = 0, i = 0; int len = 0; while(s.length() != 1) { for(i = 0; i < s.length(); i++) { if..