2022 KAKAO TECH INTERNSHIP 문제를 풀어보았다.문제를 풀 때 문자열을 변수로 변환하여 사용할 수 있으면 좋겠다는 생각으로 검색을 하다가locals(), globals(), exec()를 알게 되었다.locals()를 사용하여 다음과 같이 코드를 작성
✅ list는 set보다 값을 찾는 데 오래 걸린다.✅ \[\[]]\*n, \[{}]\*n, \[set()]\*n는 얕은 복사이기 때문에 모두 같은 값을 갖는다.✅ 다른 사람의 풀이를 보고 dictionary와 주어진 입력값을 적극 활용하면 코드 길이를 줄일 수 있음을
📖 다음은 해당 문제를 풀면서 알게된 함수이다.문자열 대문자/소문자 변경하는 방법문자열이 알파벳/숫자인지 확인하는 방법🔑 내가 제출한 답은 다음과 같다.다른 사람의 풀이를 보고 느낀점✅ import re를 하여 정규표현식을 이용하면 간단하게 표현이 가능하다.✅ 리스
카카오 게임을 직접 코딩하는 재미있는 문제를 풀어보았다.내가 작성한 solution은 다음과 같다.
🗝️ my solution🧩 group by
🗝️ my solution🗝️ my solution🗝️ my solution🗝️ my solution
✅ dictionary로 해도 깔끔하다.✅ replace는 한 번에 일치하는 모든 값을 바꿔준다.
🧩 스테이지별 클리어 현황을 거치지 않고 바로 실패율을 구하면 더 깔끔하다.🧩 실패율로 내림차순 정렬할 때 items()를 이용하지 않으면 한 줄로 줄일 수 있다.
🗝️ 2진수, 8진수, 16진수 ↔ 10진수 변환🧩 bin(첫 번째 10진수|두 번째 10진수)를 하면 각 10진수를 2진수로 변환한 후, 같은 자리에 모두 '0'이 오면 '0', 하나 이상 '1'이면 '1'로 반환한다.🧩 '0'\*n+str 대신에 rjust()
🗝️몫, 나머지🧩 키패드 좌표를 계산하지 않고 dictionary로 지정해줘도 깔끔하다.
🧩 정규표현식에서 () 괄호로 그룹을 만들어서 점수, 보너스, 옵션을 구분 지으면 더욱 편리하다.
🗝️ 리스트 원소의 길이에 따라서 정렬🧩 counter + regular language로 더욱 간단하게 풀이할 수 있다.
🧩 eval() 함수는 보안상 문제가 발생할 수도 있다고 한다. 되도록이면 사용하지 않는 방향으로 코드를 짜야겠다.
🗝️ 반올림, 올림, 내림🧩 주어진 자료를 어떻게, 어떤 자료형으로 정리하여야 효율적인지를 고민하는 것이 중요한 것 같다.
list보다 deque를 사용하고, sum을 계속 반복하여 계산하기보다 tmp를 사용하여 +, - 해주어 시간을 줄일 수 있다.
문제✅ 캐시 교체 알고리즘 중 LRU(Least Recently Used)에 대한 이해를 묻는 문제✅ cache hit : 캐시 메모리에 찾는 데이터가 존재✅ cache miss : 캐시 메모리에 찾는 데이터가 존재하지 않음LRU
문제
문제
문제
문제
문제
문제
문제🧩 Counter
시간초과
set에 해당 값이 없을 때에 remove를 사용하면 에러가 나므로 discard를 사용해야 한다. 그 외 즉, 낙첨 처리를 할 때 주의! 0 or 1개는 낙첨이므로 min을 사용하여 처리한다.
문제깊은 복사로 풀었을 경우는 시간초과!
문제
문제
문제
문제
문제
문제
문제
이렇게 문자열로 변경하고, 다시 리스트로 변경하는 것보다는먼저 최종적으로 수정된 닉네임을 저장하고,그 후에 리스트로 출력하는 것이 빠르다.