jubin_park   3일 전

  1. mmRuleInfo 에서 연도(key)는 오름차순으로 정렬
  2. 최대 한 가지 규칙이 매년 적용된다고 해서 mApplied 를 만들어 매년 최초 한 번만 룰을 적용
  3. (year1)+1 <= (my_year) <= (year2) 인 경우에 룰 적용

문제에서 말하는 조건을 다 고려해봤지만, 틀렸다고 나옵니다. 대체 어디가 문제일까요?

zlzmsrhak   3일 전

  1. " 최대 한 가지 규칙이 매년 적용되는 것이 보장된다." 인 것 같습니다. 그래서 입력 조건이 저것을 만족할 뿐 따로 처리할 필요는 없습니다.
    You may assume the rule is applied on the first day of the year, and at most one rule is applied each year.
  2. 지역코드가 바뀌는 것 같은데, 64번째 줄에서 잘못된 결과를 낼 수 있을 것 같습니다. 특히, 95번째 줄에서 지역코드를 수정하는 것은 매우 위험해 보입니다. 저곳은 조건에 맞을때만 수행되는 부분이니까요..
    거기다가, 58번째 줄의 반복문을 시작할 때에는 mAreaCode가 초기상태여야 하는데, 95번째 줄에서 바꿔버려서 잘못된 결과를 낼 수 있어보입니다.

문제가 길고 복잡해서 제가 적은것도 확실하지 않지만, 일단 저 부분은 충분히 틀릴만한 여지가 있습니다.

@zlzmsrhak

입력받은 number나 code 는 따로 init_xxxx 로 만들어 저장해줬습니다.

이렇게 바꿔도 어디가 잘못됐는지 아직도 모르겠군요.

  1. 푼 사람수가 매우 적은 문제로 실력을 키우려는 노력은 하지 마시기 바랍니다. 푼 사람이 없다보니 문제가 검증이 되지 않은 경우가 많고, 질문을 올려도 답변할 수 있는 사람이 매우 적어 도움을 받기 어렵습니다.
  2. 사실 정말로 코드가 의미하는 것과 문제에서 구현하라는 것이 완전히 달라서 코드 이해가 엄청나게 힘듭니다. 제가 지적한 부분이 제대로 고쳐졌다고 생각하시나요?
    제가 문제를 이해하기로는, 지역 코드는 질의와 상관 없이 바뀌는 것입니다. 지역 코드는 "지역" 코드니까요. 지역 코드가 07년도에 000에서 001로 바뀌면, 07년도 이후의 전화번호는 001...이고, 이러면 질의에서 07년도 전화번호로 001...을 주지 않을까요? 이런 경우를 위 코드는 지역을 제대로 찾을 수 있나요?

대충 어떻게 구현하려는지는 보이는데, 이 코드를 맞게 고치려면 약간의 수정으로는 힘들 것 같습니다. 문제를 다시 "완벽하게" 이해하고 와서 처음부터 다시 짜는게 더 나을 수도 있습니다.

  

답변이 오면 기계적으로 그 부분만을 고치지 말고, 답변이 옳은지의 여부와, 제대로 구현하기 위해 전체를 어떤식으로 고쳐야 하는지 고민해 보시기 바랍니다.

댓글을 작성하려면 로그인해야 합니다.