분류 전체보기337 [프로그래머스 1 / c++] 하샤드 수 무식하게 조건별로 식을 써버렸지만... 구간이 짧아서 가능했지 뭐... 무식하게 풀어서 10점 중 2점짜리 풀이다 이렇게 구간별로 조건을 걸지말고 아래와 같이 알맞은 로직을 생각해서 시간을 아끼도록 하자 #include #include using namespace std; bool solution(int x) { bool answer=0; int sum=0; if(x=10)&&(x=100)&&(x=1000)&&(x0){ sum=sum+(temp%10); temp=(temp/10); } // 다음 if 문을 삼항연산자로 나타내면 아래와 같다 //if(x%sum==0) //true; //else //false; return x % Sum == 0 ? true : false; } 2022. 6. 17. [프로그래머스 1 / c++] 행렬의 덧셈 프로그래머스의 풀이에 익숙해지기 위해 프로그래머스 1단계부터 모두 풀기로 했다 어려운 것을 풀기보다는 기본 문법과 구현에 초점을 둔 1단계 레벨이다 하지만 개념이 부족해서 놓친 문제가 있어서 적어둔다 2차원 배열 gom[b][c] 를 만들려면 for문을 두번 돌되, 하나의 i에서 c의 개수만큼 연달아 push 하면 하나의 부분배열로 묶이므로, for 안에서 임시벡터에 push하여 1차원 부분 배열을 만들고, 저장한 임시 벡터에 저장된 부분배열을 최종 벡터에 push 하여 하나의 요소로 만들고, i번 만큼 반복하여 2차원 배열로 만들어준다 중요한 개념이다 헷갈리지 말고 반드시 이해하고 가자 #include using namespace std; vector solution(vector arr1, vector.. 2022. 6. 17. 백준 4375/c++ )) 1 모듈러 연산에 대한 이해 1 , 11, 111, 1111, 11111 식으로 늘어나는 수 중에 입력한 a의 수의 배수인(a으로 나눠서 나머지가 0인) 최소값의 자리수를 구하는 문제이다 c++의 경우 표현할 수 있는 숫자의 크기가 정해져있으므로 자리수도 무한정 늘릴 수 없다 자리수가 올라갈때마다 자리수 nu에 ++ 해주고, 규칙에 의해 자리수가 올라가고 새로 취한 수는 모듈러 연산을 이용하여 나머지 값만 취하고 a의 배수인지 확인, 나머지가 0이면 배수이므로 그때의 자리수를 출력, 그렇지 않으면 다시 일정한 규칙으로 수를 기존 나머지값에 적용하여 반복하여 구하는 문제이다 입력의 경우 끝나지 않고 계속 받으므로, "cin.eof() 입력의 끝" 이 "아니다 ! " 가 참일 동안 while 을 통해 입력을 계속 유지하였다 while(.. 2022. 6. 17. 백준 1629/c++ )) 곱셈 - divde and conquer, 재귀함수 그대로 주는대로 계산하면 연산시간이 너무 길어서 시간 초과하는 문제이다 재귀 함수로 분할정복 divde and conquer를 사용하여 연산 수를 줄이고, 각 입력의 최대값이 int 의 최대치 값 이므로 long long 을 사용하여 결과값의 오버플로우를 1차로 막는다 분할한 값을 합칠때 큰 수끼리의 곱셈을 해야하므로 long long 뿐 아니라 %c 로 모듈러 연산을 해줘서 2차로 오버플로우를 막아야 하는 문제이다 재귀함수라지만 내가 gr로 작성한 부분이 gr=gr*gr 이고 gr=gr*a%c 이라는 부분에서 왜인지 이해하느라 머리가 터졌고 시간도 몇시간을 걸려서 이해했지만, 이해했으니 비슷한 유형도 이제 익숙해질것이다 내일을 공부를 위해 더 늦기전에 자자... #include using namespa.. 2022. 6. 17. 이전 1 ··· 61 62 63 64 65 66 67 ··· 85 다음