
Leo가 길에서 본 카펫이 갈색 격자 테두리가 둘러져 있고 내용물은 노란색 격자로 채워져 있는데 Leo는 노란 격자 갯수와 갈색 격자 갯수만 기억하지만 카펫의 전체 크기는 기억하지 못한다. 이거만 해도 기억력이 많이 좋은거 같지만 Leo는 여기서 멈추지 않는다... Leo가 길에서 본 카펫의 노란색과 갈색 격자의 갯수를 이용해서 카펫의 전체 크기를 구하고 싶어하는 문제 문제의 조건 1. 갈색 격자 갯수 brown, 노란 격자 갯수 yellow가 주어짐 2. 카펫의 테두리는 갈색 격자로 둘러져 있음 즉 카펫의 최소 높이는 3이다. 예시 그림과 같이 노란 격자를 최소 한 칸 포함하면서 갈색 격자로 테두리가 둘러지려면 최소 3칸이 필요하다. -> 이렇게 접근했어야 하는데 처음에는 최대 너비를 구해서 접근하는 ..

주어진 숫자들로 조합할 수 있는 숫자들 중 소수가 몇 개인지 찾는 문제 문제의 조건 1. string으로 변환된 숫자 numbers가 주어짐 2. numbers의 각 숫자들을 조합해서 만들 수 있는 숫자들 중 소수를 찾아서 카운트하기 3. 여기서 조합이 가능한 모든 경우를 탐색한 후 중복되는 숫자는 거르고 소수를 찾아야 함 순열을 찾아주는 함수가 있는줄 모르고 저것을 직접 구현하려다 피 봤는데... next_permutation이라는.. 친절하게 모든 순열을 구해주는 함수가 있으니까 저걸 쓰자. #include #include #include #include using namespace std; bool isPrimeNum(int num) { if (2 > num) return false; //소수를 판..

베스트앨범에 수록할 곡을 찾는 문제 이것 또한 최대 재생 장르를 찾는데까진 생각해냈지만 나머지 수록곡을 찾는 부분 구현을 어찌 해야 할 지 감이 안 와서 구글링이 필요했음... 문제의 조건 1. 노래의 장르를 담은 문자열 배열 genres, genres 배열의 각 원소들의 재생 횟수가 담긴 배열 plays가 주어짐 2. genres의 노래는 고유 번호로 구분되는데 고유번호는 genres 배열의 인덱스 번호임 3. 노래 수록 기준은 다음과 같다. 4. 위 기준대로 노래를 담았을 때 수록되는 인덱스 번호 순서를 리턴하기 5. 필요한 것: 장르별 총 재생횟수 장르별 재생횟수와 인덱스 번호 장르별 총 재생횟수를 구해서 가장 많이 재생된 장르를 찾는다. 찾은 장르로 가장 많이 재생된 고유번호 2개를 찾는다. an..

일정한 길이로 문자열을 압축하는데 가장 짧게 압축할 수 있는 길이를 찾는 문제 인데 처음엔 어떻게 풀어야 할지 감이 안 와서 구글링해서 풀었습니다 ㅠ.ㅠ 문제의 조건 1. 압축할 문자열 s가 주어짐 2. 같은 알파벳이 연속해 있으면 압축할 수 있는데 문자열의 처음부터 끝까지 같은 길이로만 압축해야 한다. aaabb 일 때 앞에는 a가 3개니까 3a로 압축하고 b는 두개니까 2b로 압축해서 3a2b로 압축하는 건 안 됨 2aa2b = i; i++) //s 절반까지만 탐색 { string convert, tmp; int count = 1; tmp = s.substr(0, i); //i가 증가함에 따라 비교할 문자열의 길이도 점점 늘어날 것임 for (int j = i; s.length() > j; j += ..

죄금 시간이 걸렸지만... 다른 분들도 일일이 회전시킨거 같아서 조금 맘이 놓이는 문제...ㅎ 문제의 조건 1. rows x columns 행렬이 있고 회전시킬 값을 저장한 2차원 배열 queries가 주어짐 2. rows와 columns만 주어지기 때문에 주어진 가로 세로값으로 회전시킬 보드판을 직접 만들어야 함 3. queries의 값들로 만들어지는 사각형 테두리에 있는 원소들만 시계 방향으로 회전시키는데... 그 중에서 최소값을 배열에 담아서 리턴하기 4. 문제에서 x, y 값을 상당히 헷갈리게 적어놔서 디버깅하면서 x, y 인덱스값을 잘 구하는지 확인해야 함... 5. 회전 순서 회전을 시작할 인덱스를 먼저 구한 뒤 현재값을 저장할 변수에 저장한다. 시작 인덱스의 원소를 최소값으로 지정한다. ➡️..

풀이 과정을 떠올리는 건 쉬웠지만 시간이 너무 오래 걸리는 코드를 짜는 바람에 효율성 테스트 통과를 하지 못해서... 힌트 참고해서 다른 방법으로 다시 짜서 통과한 문제 ㅠ.ㅠ 문제의 조건 1. string s가 주어짐 2. 앞뒤로 두개가 같은 알파벳이면 제거할 수 있다. 같은 알파벳 두개를 제거하고 나면 남은 것들끼리 이어붙여서 또 짝지어 두개가 같으면 제거하고 남은것들끼리 이어붙이고.... 를 반복해서 모든 알파벳이 제거되면 1 제거되지 않으면 0 리턴 #include #include #include using namespace std; int solution(string s) { int answer = -1; vector tmp; for (int i = 0; s.length() > i; i++) {..

주어지는 배열의 원소들을 합하거나 더해서 타겟 넘버로 만들 수 있는 모든 경우의 수를 찾는 문제 문제의 조건 1. 정수가 담긴 배열 numbers, 타겟 넘버 target이 주어짐 2. 배열의 모든 숫자를 이용해서 더하고 빼서 target과 같아지는 경우가 몇 개인지 구해서 리턴 #include #include using namespace std; int answer = 0; void dfs(vector& numbers, int target, int index = 0, int sum = 0) { //마지막 인덱스라면 if (index == numbers.size()-1) { //마지막 바로 앞 원소까지 더한 값에 마지막 원소를 더했을 때 target과 같아진다면 경우의 수 증가 if (sum + numb..

안 매운 음식들을 섞어서 매운 음식으로 만들건데 총 몇 번 섞어야 하는지 구하는 문제 문제의 조건 1. 음식들의 맵기를 담은 배열 scoville, 기준이 되는 스코빌 지수 K가 주어짐 2. scoville 원소들이 K 이상 되어야 함 3. 새로운 음식을 만드는 공식은 이렇다. 가장 덜 매운 두가지를 뽑아서 위의 공식으로 섞는다. 4. 모든 음식을 K 이상으로 만들 수 없으면 -1 리턴 (이 예외처리를 안 해서 또 시간 날림 ㅠ.ㅠ 문제를 똑바로 읽읍시다...) 5. 가장 덜 매운 음식의 지수가 최소 K 이상 되려면 몇 번 섞어야 하는지 구해서 리턴하기 원소 하나하나 복사해서 set으로 만든다고 뻘짓했는데 우선순위 큐로 쉽게 해결할 수 있었던 문제... #include #include #include u..
- Total
- Today
- Yesterday
- 프로그래밍
- c언어
- 캐나다생활
- hackerrank
- DFS
- 영어공부
- 아이패드
- 컴퓨터공부
- 프로그래머스
- 캐나다
- c++
- 다이나믹프로그래밍
- BFS
- 애플
- 알고리즘
- 그리디
- 깊이우선탐색
- C언어기초
- 컴퓨터
- 너비우선탐색
- 컴퓨터사이언스
- 해커랭크
- greedy
- 코딩공부
- 하드웨어
- 백준
- 문제풀이
- dp
- 스위프트플레이그라운드
- 기초
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |