본문 바로가기

etc

코테 알고리즘 실수 목록

https://school.programmers.co.kr/learn/courses/30/lessons/67258

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

- map 사용시 ...ifAbsent() 함수를 이용했는데 이때 논리적으로 오류가 있는 것을 한참동안 발견하지 못했다.

만약 map을 이용할 때 다음 함수를 사용해서 틀린다면 코드가 길어져도 get, contain 관련 함수로 로직을 나누어서 생각하자.

 

- do while을 통해서 슬라이딩 원도우 구현하는 과정에서 로직 상 순서가 이상한 점이 있었다. 그래서 마지막 인덱스에서 확인이 안되는 경우가 발생하였다. 

 

https://school.programmers.co.kr/learn/courses/30/lessons/92343#

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

dfs로 완전 탐색을 하는데 방문 확인하는 부분에서 테스트를 성공하지 못했다.

간단한 dfs/bfs 인 경우는 방문을 초기화하지 않아도 잘 작동하지만 복잡한 로직으로 이루어진 완전 탐색은 꼭 방문처리를 초기화하는데 신경을 써서 코드를 작성해야겠다.

 

https://school.programmers.co.kr/learn/courses/30/lessons/67259

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

bfs를 응용한 문제이다. 문제 접근 자체는 수월하게 해서 14번 testcase말고는 금방 통과했다. 하지만 14번을 자꾸만 실패해서 어디에서 로직이 잘못되었는지 찾기가 너무 힘들었다. 결론은 방문 처리를 함에 있어서 오류가 있었다. 위치 기반으로만 방문 처리를 하는 것이 아니라 이 문제에서는 방향 또한 중요한 변수임을 생각하지 못한 것이 원인이었다. 

 

https://school.programmers.co.kr/learn/courses/30/lessons/72414

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

시간을 배열로 치완할 때 시간 00:00:00 에 1초 시청시간을 배정한다는 것의 괴리감을 알아채지 못해서 오류가 발생했던 문제, 질문에서 사용자의 시청 시간은 이상, 이하가 아니라 이상, 미만이라는 코멘트에 힌트를 얻어서 오류를 발견했다. 엄밀히 말하면 이상, 이하가 맞는 것 같지만 시간을 배열로 옴겨서 생각하면 배열은 0의 길이를 가진 시간도 1의 공간을 할당하기 때문에 이 차이를 받아들이기 위해서 시간을 이상, 미만으로 생각해야한다.

 

https://school.programmers.co.kr/learn/courses/30/lessons/81303

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

해당 문제는 정답을 반환하는 과정에서 로직이 복잡해져 실수를 한 경우였다. 간단하게 알기 쉽게 로직을 변경하니까 이해하기도 쉽고 명확한 코드를 작성할 수 있었다.

 

https://school.programmers.co.kr/learn/courses/30/lessons/154540#

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

Union find와 dfs를 이용해서 해결한 문제이지만 예상치 못한 실수로 시간을 잡아먹었다. 바로 ArrayIndexOutOfBoundsException이다. 생각한 로직대로 작동하면 틀리는 것이 이상했는데 2차원 배열의 index를 1차원으로 변경하는 getIndex(int row, int col) 함수를 작성할 때 사소한 실수를 해서 발생했다. 3글자를 더 타이핑해야하는데 안한 효과가 광범위하게 일어났다. 

String[] maps;
//<-- before : error code --> 
public int getIndex(int row, int col) {
        return (row * maps[0].length()) + col;
}
//<-- after : correct code -->
public int getIndex(int row, int col) {
        return (row * maps[0].length()) + col;
}

https://school.programmers.co.kr/learn/courses/30/lessons/92345

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

게임 알고리즘을 처음 접한 경우라서 정말 힘들게 해결한 문제. 이해하고 코드를 작성함에도 불구하고 계속해서 틀려서 왜 틀린지 알아내기까지 오래 걸렸다. 에러의 원인은 함수의 로직을 이상하게 작성한게 아니고 solution에 정의한 절차에서 min() 대신 max()를 쓰는 바람에 틀린 것. 두글자 차이가 몇시간을 잡아먹었다. ㅠㅠ

'etc' 카테고리의 다른 글

가상머신 팁 모음  (0) 2023.06.03
리눅스 명령어 모음  (0) 2023.04.17
REST 란 무엇인가?  (0) 2021.11.08
해쉬 충돌  (0) 2021.08.10
apache api 사용(kotlin)  (0) 2021.07.20