개발 노트237 [구현 / c++] 하루 중 3 이 하나라도 들어간 모든 시각의 경우의 수 자리수 별 가능한 숫자의 경우의 수를 곱하고 더하여 답을 찾으려 하였으나 생각보다 복잡해서 오류가 나고 문제 푸는데 시간을 초과하였다. 결국 하루는 86400 초이므로 생각보다 문제의 가능한 최대 경우의 수가 적으니 완전 탐색이 더 잘맞고 간단하게 코드를 짤 수 있는 문제였다 #include using namespace std; // 각 시각의 숫자를 모두 체크하는 것은 따로 함수를 만들어 구현하는 것이 편하다 // 각 시각의 자리수마다 3이 하나라도 있는지를 or로 체크하자 bool check(int i, int j, int k){ if(i%10==3 || j%10==3 || j/10==3 || k%10==3 || k/10==3){ return true; } return false; } int main.. 2022. 6. 21. [구현 / c++] 상하 좌우 이동 이동할 dx, dy를 움직임을 표현할 기호 LRUD와 인덱스를 같게 해주어서 4방향이니 4가지 인덱스 중 입력한 LRUD와 인덱스가 같을때 이동하도록 코드를 짠 점 그리고 예외 사항인 맵 밖을 벗어났을때는 움직이지 않도록 하기 위해, 이동이 적용된 예상 좌표를 구하고 수정 후 좌표가 맵 범위 밖일때, continue하여 갱신하지 않고, 범이 밖이 아닌 경우에만 좌표를 갱신하도록 한 점이 포인트였다 여러번 반복해서 풀어보고 익숙해지자 #include using namespace std; int n; // 이동할 맵 범위로 쓸 n 입력 string plans; int x=1, y=1; // 시작 위치 초기화 // L R U D 에 따른 이동방향 int dx[4]={0,0,-1,1}; // 오른쪽 아래로 향하.. 2022. 6. 21. [greedy / c++] 최대의 모험단 수 만들기 그리디 관련 공부가 필요해서 아래 유튜브의 그리디 영상을 보고 이해하는데 시간이 좀 걸렸던 문제를 코드로 하나하나 이해해가며 따라해보았다 생각보다 문제가 이해하기 난해했다. 코드 옆에 주석에 문제와 이해한 해석을 달아보았다 https://www.youtube.com/watch?v=2zjoKjt97vQ #include using namespace std; int n; vector arr; // 모험가 길드 문제 // n명의 모험가가 있다. 공포도가 x명인 모험가는 x명 이상의 모험단에 // 참여해야만 출발이 가능하다. 최대로 떠날 수 있는 모험단의 수는? // 모험가가 모험단에 모두 속할 필요는 없다. int main(){ // 공포도가 작은 수부터 모험단을 만들어야 // 최대의 모험단 수를 얻을 수 있다.. 2022. 6. 21. [프로그래머스 2 / c++] 전화번호 목록 - 해시 해쉬를 이용해서 풀라는 문제 같은데, 정렬을 사용 후 앞뒤만 비교하는 것이 더 효율적인 함정 문제이다 하지만 배우는 입장에서는 두 경우 모두 배울점이 많았다 정렬은 sort 후 다음 요소에 이전 요소를 find하여 0인지로 접두어를 찾는 아이디어!(없으면 ::npos가 나올 것이다) 해시는 아직 사용 경험도 부족한 만큼 원리이해와 key값이 없을때 key가 map에 추가되고 0의 value를 갖는점, substr 을 루프에 활용하는 아이디어 등을 배울 수 있었다 #include using namespace std; bool solution(vector phone_book) { // 1. 정렬 후, 뒤의 숫자에서 앞의 숫자 find 하기 // 오름차순 정렬 후, 뒤의 숫자가 앞의 숫자를 포함하는지 확인. .. 2022. 6. 21. 이전 1 ··· 41 42 43 44 45 46 47 ··· 60 다음