머쓱이네 피자가게는 피자를 여섯 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 n이 매개변수로 주어질 때, n명이 주문한 피자를 남기지 않고 모두 같은 수의 피자 조각을 먹어야 한다면 최소 몇 판을 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요.
휫짜 나눠먹기 문제인데
class Solution {
public int solution(int n) {
int answer = 1;
int tOPS = answer * 6;
while(tOPS % n != 0){
answer++;
}
return answer;
}
}
이렇게 작성했는데 실행시간이 너무 긴데 왜 그런걸까요?
class Solution {
public int solution(int n) { int answer = 1; while(true){ if(6*answer%n==0) break; answer++; } return answer; }}
이건 또 존나 빠르네요.. 같은 와일문인데
n이 큰 소수면 몇번 돌아가겠냐 다르게 풀어라
아 그러네요 ㄷㄷ 근데 밑에껀 while문 안에 if문 조건을 활용하던데 while문에 조건 쓰는게 while문 안에 if문 조건 활용하는거보다 빨라야 정상인거 아닌가요?
아래 if는 니가 의도한 동작이 아닐거임 % 연산자 우선순위 때문에 다르게 나올걸? %나 비트 연산 쓸때는 괄호 치는게 좋음
밑에껀 정답지인데 제가 쓴 코드는 존나 느린데 저 코드 복붙해서 쓰니까 바로 결과값이 일치하더라고요.
위에거 answer이 바뀌어도 tOPS는 안바뀌니까 무한루프일듯
아.. tOPS는 안바뀌나요? 쓰바.... 어렵네
와 형 tOPS 때문이었네요;; 왜지 ㄷㄷ;;;
존나웃긴게 실행시간만 있으면 다 맞는거 같던데.. 제가 작성한 코드가 3개 테스트 중 1개는 통과 나머지는 10초 실행시간 초과떳거든요.. tOPS도 바뀌니까 이런 결과가 나오는거 같은데..
수학식이랑 다름 y=6x 일때 x값이 바뀌면 y값도 바뀌지만 코딩은 다름 기초부터 다져라 응애야
근데 기초 다지라고 코테하는거 아닌가요??
아무튼 덕분에 감사히 잘 알아갑니다!!! 감사해요 형
tops가 외부에서 한번 선언된 이후로 answer값만 변하지 tops에는 따로 연산이 안되잖아
테스트 하나 통과했다는건 운좋게 아다리 하나 맞은듯
그러네요 while문 안에 연산 써주니까 되네 ㄷㄷ 감사합니다
보통 케이스 하나 통과한건 운좋게 통과했다고 보면 되고 케이스 한두개정도만 통과못했으면 경계값같은 예외 신경 못써준거
아 그렇군요 꿀팁 감사합니다!!!
이거 링크좀 - dc App
https://school.programmers.co.kr/learn/courses/30/lessons/120815
난 왜 이거 최대공약수로 풀었지?
class Solution { public int solution(int n) { int answer = 6; while(answer%n!=0){ answer+=6; } return answer/6; } }