일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 프로그래머스
- 21609
- 음수와 size 비교
- 머신러닝
- 코딩
- kt에이블스쿨
- 백준
- 코테준비
- 파이썬
- 취준
- 코테
- 상어중학교
- 코테공부
- 모델링
- 크롤링
- 코딩테스트
- 스터디
- 미니프로젝트
- 알고리즘
- C++
- Ai
- map
- 에이블스쿨
- Queue
- 코테연습
- 개인정보수집유효기간
- python
- BFS
- 데이터전처리
- dfs
- Today
- Total
목록Coding (32)
얼레벌레

문제 설명 아이디어 0P0, P0, 0P, P 에 관한 설명들 모두 진법 변환 후 0을 기준으로 split 하라는 말이다. 그래서 진법 변환 0을 기준으로 split 해 배열에 담음 배열에 담은 것들을 소수인지 아닌지 판단해, 소수일 경우 answer+1 진행 순으로 코드를 짰다. 코드 #include #include #include #include using namespace std; bool isPrime(long long n) { if(n==0 || n==1) return false; for(int i=2; i0) { st += to_string(n%k); n /= k; } reverse(st.begin(), st.end()); vector arr; string tmp = ""; for(int i=..

문제 설명 생각하기 또 다시 next_permutation으로 해결했다. next_permutation 만세만세 만약 예시처럼 3가지 던전 1, 2, 3이 있다면 1->2->3, 1->3->2, 2->1->3, 2->3->1, 3->1->2, 3->2->1 이런식으로 순서를 다 고려해줘야 한다. (각 던전별로 최소필요피로도, 소모피로도가 다르니까) 그래서 순서를 정해주기 위한 벡터 arr을 생각해 냈다. arr 벡터에 0부터 (dungeons 사이즈 - 1) 까지 숫자를 넣고 arr 벡터를 next_permutation을 하는데, 내부에서는 for문으로 arr 벡터를 처음부터 끝까지 돌며(i), arr[i]에 있는 순서를 k라고 하면, 현재 유저 피로도가 dungeons[k][0]보다 크거나 같고 dun..

문제 설명 생각해보기 yellow의 테두리 1줄이 갈색이라고 했으므로, yellow의 너비와 높이를 w, h라고 한다면 전체 직사각형의 너비와 높이는 w+2, h+2가 된다. yellow의 넓이는 w*h, brown의 넓이는 (w+2)*(h+2)-w*h 이다. 이 점을 이용해서 생각하면 쉬워진다. yellow를 가지고 모든 약수를 찾는다. (for문 이용, 탐색은 sqrt(yellow)까지만 탐색하면 됨) 약수를 w, h라고 하자. 각각 찾은 약수를 w*h, (w+2)*(h+2)를 계산해서 차이값을 구한다. 그 구한 차이값이 brwon의 면적과 같으면 OK 코드 #include #include #include using namespace std; int calc(int w, int h){ int newW..

문제 설명 생각해보기 제일 먼저 떠오른 건 next_permutation.. 너였어.. 내가 사랑하는 next_permutation 1. 만약에 n자리 string이라고하면 그 string에서 1자리, 2자리, ... n자리 이렇게 골라야 하니까 여기서 1과 0으로 구성된 숫자를 고르는 벡터 n 생성 (0이면 그 자리수 선택 x, 1이면 선택 o) 2. 그리고 나서 n을 next_permutation 돌리면서 각 자리 수를 선택해 arr 벡터에 넣어줌 3. 그렇게 고른 arr 벡터를 next_permutation 돌리면서 경우의 수를 만들고, 각 경우에서 생성된 숫자들을 lists 벡터에 넣음 4. 최종적으로 lists 벡터를 sort 하고나서, 중복으로 나타나는 숫자 제거 5. 중복 제거한 lists ..

문제 설명 수포자가 되지 말자 해결방법 사실 너무 쉬운 문제라서... 해결방법 적는게 창피함... ㅎㅎ 1번 수포자는 [1, 2, 3, 4, 5]를 반복 2번 수포자는 [2, 1, 2, 3, 2, 4, 2, 5]를 반복 3번 수포자는 [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]를 반복하는 패턴이 있다. 그래서 각각의 사람들을 벡터에 저장하고, 각 사람들이 맞춘 문제 수를 loop를 3번 써서 카운트했다. 그 다음에 가장 많이 맞춘 문제 수를 maxNum에 저장한 후, 카운트 한 문제수와 maxNum이 일치하는 사람들을 answer 변수에 push_back 해줬다. 코드 #include #include #include using namespace std; vector solution(vector..

문제 설명 생각하기 처음에는 sizes의 크기만큼 돌면서 각각 sizes[i][0]과 sizes[i][1] 의 가장 큰 값을 w, h에 담고, 모든 명함을 다 담을 수 있는지 True, False로 반환하는 bool isOk() 함수를 만들어, 만약 다 담을 수 있다면 다음으로 큰 값을 w, h에 담는 방법을 생각해 보았다. 하지만 이렇게 하면 생각할 것이 너무 많아졌다. '다음으로 큰 값'을 계속 loop를 돌며 탐색해야 하고 (전체 배열 탐색), w, h 중 어떤 변수를 다음으로 큰 값을 담을지를 정해야 한다. (총 3가지 경우의 수가 나옴) 그래서 다시 생각해보니, 처음에 sizes[i][0], sizes[i][1] 중에서 sizes[i][0]이 더 크도록 설정해주고 (sizes[i][0]보다 si..
문제 링크 https://www.acmicpc.net/problem/1654 1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 www.acmicpc.net 풀이 이분 탐색 문제이다. 나는 탐색 범위 왼쪽을 pl, 중간을 pc, 오른쪽을 pr로 두고 풀었다. 처음에는 맨 처음 탐색 범위가 1부터 배열에서 가장 작은 수인 줄 알았다. 그렇게 소스 코드를 짰고, 결과는 시간초과가 났다. 아마 테스트케이스 중에 가장 작은 수보다 랜선의 길이가 커야 할 때가 있는 것 같았다. 그래서 계속 재귀함수 안으로 안으로 들어가다..

문제 링크 https://www.acmicpc.net/problem/15683 15683번: 감시 스타트링크의 사무실은 1×1크기의 정사각형으로 나누어져 있는 N×M 크기의 직사각형으로 나타낼 수 있다. 사무실에는 총 K개의 CCTV가 설치되어져 있는데, CCTV는 5가지 종류가 있다. 각 CCTV가 감 www.acmicpc.net 풀이 요즘 삼성 기출만 주구장창 풀고 있다.. 나 맨날 떨어뜨리는데 뭐가 좋다고 푸는건지 ㅋ 이 문제는 접근은 정말 잘했는데 쓸데없는 이상한 실수를 하는 바람에 1-2시간을 날렸다.. for(int i=x-1; i>=0; i--) 라고 써야하는데 for(int i=x-1; x>=0; x--) 이런 실수를 두번이나 했다. 미쳤다 미쳤어 실수도 계속되면 실력이라는 소리를 정말 중..

문제 링크 https://www.acmicpc.net/problem/14891 14891번: 톱니바퀴 총 8개의 톱니를 가지고 있는 톱니바퀴 4개가 아래 그림과 같이 일렬로 놓여져 있다. 또, 톱니는 N극 또는 S극 중 하나를 나타내고 있다. 톱니바퀴에는 번호가 매겨져 있는데, 가장 왼쪽 톱니바퀴 www.acmicpc.net 풀이 문제가 하라는대로 하면 풀 수 있는 문제다. (내기준) 오늘 에이블스쿨에서 코드를 짤 때 생각안하고 그냥 짜지말고 생각 -> (그래프나 도표 - 생략 가능) -> 슈도코드 -> 코드 이 순서로 짜면 잘 된다고 배웠는데, (사실 평소에도 이렇게 생각하긴 했지만 문제 풀 때 당황해서 맨날 '생각 -> 코드'가 되어버림;) 문제가 쉬운 것도 있겠지만, 실제로 저 순서로 짜보니 잘 짜..

문제 링크 https://www.acmicpc.net/problem/14890 14890번: 경사로 첫째 줄에 N (2 ≤ N ≤ 100)과 L (1 ≤ L ≤ N)이 주어진다. 둘째 줄부터 N개의 줄에 지도가 주어진다. 각 칸의 높이는 10보다 작거나 같은 자연수이다. www.acmicpc.net 풀이 구현 문제인데 왜 난 못할까 후; 내가 접근할 때는 다른 블로그들과 다르게 경사로를 놓은 것을 일일이 기록해주었다. 그래서 경사로를 놨는지 체크하는 배열이 필요했고, 입력받은 배열도 +1을 해주면서 경사로를 설치하는 것을 표시해주었다. 그리고 나서 마지막에 이어져있는지 확인하는 코드를 짰다. 가뜩이나 구현 잘 못하는데 다른 분들은 다 나처럼 풀지 않으니까 참고를 못하고 도움을 받을 길이 없어서 이 방법은..