본문 바로가기

전체 글199

[프로그래머스] 체육복 c++ 풀이 1. 앞뒤로 모두 체육복을 빌릴 수 있다면 앞에 있는 체육복을 빌린다. (뒤에 있는 체육복은 2번 앞에 있는 사람이 빌릴수도 있기 때문에) 2. 여벌을 가지고 왔지만 도난당한 사람은 본인 것을 입어야하기 때문에 체육복을 입을 수는 있지만 앞뒤로 빌려줄 수 없다. #include #include #include using namespace std; bool students[32]; int solution(int n, vector lost, vector reserve) { int answer = 0; for(int i=0;i 2024. 1. 24.
[프로그래머스] 모음사전 c++ 풀이 백트래킹을 이용해 풀었다. 사용했던 원소를 계속 사용할 수 있기 때문에 chk배열을사용하지 않고 풀었다. #include #include using namespace std; string end_s; int chk[5]; string alphabet = "AEIOU"; int answer ; int cnt; void dfs(string s){ //원하는 단어가 있다면 리턴한다. if(s==end_s) { answer=cnt; return; } //길이가 5이하인 단어를 만든다. if(s.size()>4) return; for(int i=0;i 2024. 1. 22.
[프로그래머스] 피로도 c++ 풀이 카테고리가 완전탐색이기도 하지만 던젼길이가 최대 8이기 때문에 완전탐색으로 풀어도 된다고 생각했다. 백트래킹을 이용해서 던전을 방문하는 순서를 모두 탐색한다. 던젼을 선택할때 남은 피로도로 탐색할수있는지 검사한다. 스코어가 0보다 작다면 더이상 탐색못하므로 return해준다. #include #include using namespace std; vector dungeon; vectorchk; int answer; void dfs(int score,int cnt){ //남은 피로도가 없음녀 탐색 끝 if(scoreanswer) answer=cnt; for(int i=0;i 2024. 1. 22.
[프로그래머스] 카펫 c++ 풀이 노란색의 가로길이가 i라고 한다면 i+2는 전체가로길이다. 전체가로길이로 크기를 나눴을때 나머지가 발생한다면 continue를 해준다. 1.노란색의 크기를 i(노란색의 가로길이)로 나누었을때 나머지가 생기지 않고 , 2.노란색의 세로길이(yellow/i)가 갈색의 세로길이-2랑 같을때 i가 노란색의 가로길이이다. #include #include using namespace std; vector solution(int brown, int yellow) { vector answer; int total = brown + yellow; for(int i =1 ;i*i 2024. 1. 22.