TIL 9 : 220914

김시은·2022년 9월 14일
0

Today I Learned

목록 보기
6/9

SQL

해커랭크 코딩테스트 3문제를 풀고 스터디를 진행했다.

1. REPLACE()

문자열에서 특정 문자를 제거하거나 대체하고 싶을 때 사용하는 함수

REPLACE(string, from_string, new_string)

2. CONCAT()

두 개 이상의 expression을 합쳐주는 함수

SELECT CONCAT("SQL ", "Tutorial ", "is ", "fun!")
>>> SQL Tutorial is fun!

PYTHON

연습문제 시리즈 #5 문제 풀고, 프로그래머스 코딩테스트 문제 1개를 풀었다.

1. Programmers 실패율

문제링크

문제
전체 스테이지의 개수 N, 게임을 이용하는 사용자가 현재 멈춰있는 스테이지의 번호가 담긴 배열 stages가 매개변수로 주어질 때, 실패율이 높은 스테이지부터 내림차순으로 스테이지의 번호가 담겨있는 배열을 return 하도록 solution 함수를 완성하라.

  • 실패율은 다음과 같이 정의한다.
    • 스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수 / 스테이지에 도달한 플레이어 수

실패율을 구하고, 실패율이 높은 순서대로 스테이지 넘버를 출력하는 로직은 어렵지 않게 완성했다.
하지만 제출했을 때 일부 케이스에서 런타임에러가 발생했는데, 결과적으로 아무도 도달하지 못한 스테이지가 있을 수 있다는 것을 고려하지 못했기 때문이었다.

  • 문제의 조건들을 꼼꼼히 읽자
    위와 같이 특이케이스에 대해서는 어떻게 처리해야 할지 제한사항으로 정리를 해주고 있다. 제한사항을 준다는 건, '이런 생각하지 못한 케이스가 있을 수 있다'는 것을 내포해주는 것과 다름 없는 것 같다. 어떻게 보면 이 자체로 힌트가 될 수 있다는 것!
  • 무작정 코드를 짜기 보다 로직을 먼저 세우자.
    로직을 대략적으로만 세워두고 코드를 짜면, 생각하지 못한 예외 케이스를 놓치기 쉬운 것 같다. 이미 내가 생각한 로직에 맞게 코드를 구현해두었으니, 어느 정도 생각의 틀이 생겨 그것을 벗어나서 생각하기가 힘들어졌다.
    가능한 케이스들을 먼저 정리해보고 시작하자.

데잇걸즈를 시작하며 매일 공부한 것, 배운 것을 짧게라도 기록하자고 다짐했지만 하루이틀 건너뛰기 시작하다가 거의 한 달만에 다시 포스팅을 하게 됐다.
TIL의 목적은 배운 것을 "잘" 정제해서 정리하는 것보다도, 하루를 회고하며 내일의 나를 다짐하는 데에 있다고 생각한다. 그렇게 다짐했음에도 불구하고, 오늘 배운 모든 것을 노트정리하듯 깔끔하고 빼곡하게 올려야 할 것 같다는 완벽주의 때문에 자꾸만 TIL을 미루게 됐던 것 같다.
다시 새롭게 다짐하며, 말 그대로 배운 모든 것을 기록하는 것보다도
1) 오늘 한 것(혹은 보고 느낀 것)
2) 배우고 깨달은 것
3) 적용할 것
위주로 가볍게 기록해보기로 한다.

profile
데이터분석가를 꿈꾸어요

0개의 댓글