본문 바로가기

오답노트4

[프로그래머스 1 / c++] 콜라츠 추측 확실히 프로그래머스 1단계는 백준 브론즈보다 쉬운것 같다. 물론 뒤쪽 연습문제 기준이다 앞쪽은 1단계라고 하지만 백준 실버나 골드정도 난이도가 보인다. 쉬운거부터 빠르게 1단계를 클리어하고 어려운 문제를 풀려고 한다. 오답노트에는 실패 케이스만 올리고 있다 그냥 조건만 열심히 구현한 코드다. 딱히 엄척난 로직이 있지 않다 하지만 num 가 int 형으로 주어지는데, 이를 그대로 사용하면 테스트 케이스에서 숫자가 커져서 런타임에러가 난다 이는 num 이 int 의 범위 이상의 수가 되었기 때문이다 그러니 그냥 num 을 long long 자료형으로 바꿔주면 쉽게 해결 된다 #include #include using namespace std; int solution(int num) { int answer =.. 2022. 6. 17.
백준 3986/c++ )) 좋은 단어 - 오답 나열한 문자간의 규칙을 찾아서 수열을 이용해서 풀어보았다. s의 길이가 짝수개일때 B의 개수는 중요하지 않고 A의 개수만 파악하여 A의 인덱스를 벡터d에 저장, A가 없을시에는 s는 모두 B만 있고 짝수이므로 a를 세는 acnt 가 0일때 결과개수 cnt 를 하나 올려준다 벡터 d의 요소들의 총 합이 홀수일 경우 s는 결과에 부합 cnt 를 올려주는 로직이다. 테스트 케이스는 모두 맞으나 계속 실패한 원인 분석 결과, 로직이 잘못되었다. 반례로 ABAAAABABBAA 의 경우는 결과에 부합하지만 d의 총합이 짝수이므로 에러가 난다 d 의 인덱스 사이의 차이를 새 벡터 de로 만들어서 de 총합이 홀수인 경우로 수정하여도 에러가 났다 즉 이 로직은 설계부터 잘못되었으므로 폐기한다. 아래는 실패한 코드이다 .. 2022. 6. 16.
백준 알고리즘 10988번 - 입출력, 입력범위, stirng 이해 부족으로 인한 런타임에러 ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 1. 입출력 속도를 올려주는 위의 경우는 알고리즘 시간초과가 된다면 그 후에 추가하여 시도할 것. 굳이 미리 사용 말자 2. string 의 길이를 구할때는 length(), 벡터의 길이를 구할때는 size()를 써야 한다 3. 문제에서 입력범위가 주어지곤한다. 입력범위는 출제자가 내는 범위이니 내 코드에는 범위 내용을 적을 필요없다. 내 코드는 입력범위가 달라지더라도 항상 올바른 로직이어야 하기 때문이다. 물론 자료형의 판단에는 반영을 해야할것이다 4. string 은 정적할당 배열이 아닌 동적할당 배열이다. 즉, string 은 벡터이다. 그러므로 할당전에는 크기를 알 수 없으며, 인덱.. 2022. 6. 13.
tomcat 실행 시 두 번 출력? JSP 강의를 듣고 따라 하던 중 이상한 점을 발견했다 요런 html 입력 폼에서 한글 입력 시 깨짐 문제를 서블릿을 이용하여 xml 을 수정하기 or 서블릿에 인코딩 코드추가 or 서블릿 필터에 인코딩 코드 추가 등의 방법으로 해결하고 서블릿 필터에 대해서 배우던 중 이상한 점이 보였다 인풋폼에 입력하고 필터효과를 보기 위해 chain.dofilter() 전 후로 고구마를 출력하도록 했는데 내 이클립스 콘솔에 한번이 아닌 여러번 출력이 뜬것이다. 난 요청 응답 시 한번씩만 출력하게 했는데! 이 문제를 검색해보니 That’s very normal. You have an application listener that loads a the context, and you have a servlet that l.. 2022. 5. 18.