[TIL] 20210614 - 항해 8일차

Jihyun·2021년 6월 14일
0

항해99

목록 보기
4/46

알고리즘 마라톤 시작!
열흘 동안 총 60문제가 주어지고, 기본 40문제를 풀어야 한다.

순서는 상관없다고 했지만 이왕이면 구멍내지 않고(스프레드 시트) 풀었다는 표시를 남기고 싶어서 순서대로 풀고 있다.

오늘 공부한 것

BAEKJOON ONLINE JUDGE(BOJ)

오늘 알고리즘 커밋 바로가기

  • 10869 사칙 연산
  • 2588 곱셈
  • 2884 알람 시계
  • 1110 더하기 사이클
  • 4344 평균은 넘겠지
  • 4673 셀프 넘버
  • 1157 단어공부
  • 2941 크로아티아 알파벳
  • 1316 그룹 단어 체커
  • 2839 설탕 배달
  • 1011 Fly me to the Alpha Centauri

알고리즘을 풀며 느낀 점

  1. 파이썬이 조금 더 편하다.(자바스크립트로 도전중)
    항해에 들어오기 전, 파이썬으로 알고리즘을 조금 도전했었다.
    파이썬을 오랜만에 사용하면서도 직관적인 문법 때문에 금세 익숙해져서 '이렇게 구현해야지!' 하고 계획을 세우고 나면 통과여부와 상관없이 일단 구현할 수는 있었다.
    하지만 자바스크립트로 풀다보니 일단 괄호도 많고 파이썬에 비해서는 덜 직관적이라는 것을 느꼈다.
    ⭐무엇보다⭐ 입력받는게 너무 어렵다.
    백준 사이트에서도 어렵고, VSC에서도 어렵다.
    다른 분의 친절로 VSC에서 입력 받는 것처럼 구현하는 글을 얻을 수 있었지만, 그것마저 복잡하고 내 이해가 낮아서 가짜 데이터를 계속 만드는 방향으로 구현하고 있다.
    파이썬은 그냥 data = input() 이거면 됐는데..

  2. 그래도 재밌다.
    스프레드시트를 보면 항해 분들이 얼마나 문제를 푸셨는지 확인할 수 있다.
    이게 내 경쟁심리를 자극했다.
    점심시간, 저녁시간도 밥만 딱 먹고 앉아서 계속 풀었다.
    안풀릴 때는 조금 화가 나지만 풀었을 때의 희열을 느끼기 위해 계속 푼다.

  3. 내 풀이는 너무 더럽다...😅
    나도 깔끔하게 풀고 자랑하고 싶은데 '정답입니다!'를 받아도 찝찝할만큼 코드가 더럽다.
    그래서 다른 고수분들의 풀이를 보러가면 정말 신세계다.
    특히 인상깊었던 문제는 2941 크로아티아 알파벳 이다.
    내 코드는 50줄에 달하는 반면, 해당 코드는 20줄도 되지 않았다😱
    아래 코드를 보고 정말 박수쳤다.
    split과 join을 이용해서 말도 안되게 간결해졌다.
    꼭 다른 문제에서 써보고 싶은 조합이라 벼르고 있다:)
const fs = require("fs");
const input = (
    process.platform === "linux"
      ? fs.readFileSync("/dev/stdin").toString()
      : `ljes=njak`
).trim();

let croatia = ["c=", "c-", "dz=", "d-", "lj", "nj", "s=", "z="];

function solution(input) {
  for (let alphabet of croatia) {
    input = input.split(alphabet).join("Q");
  }

  return input.length; // return input일 경우 QeQQak를 반환한다.
}

console.log(solution(input));
  1. 그럼에도 구현 먼저
    풀이도 더럽고 속도도 빠르진 않다.
    하지만 그 부분에 초점을 두면 구현이 되려던 것도 '아 이건 비효율적이야'하면서 폐기하려 든다.
    다른 방법도 없으면서🤨
    오늘 알고리즘 튜터님께서도 일단은 구현이 되어야 한다고 말씀하셨기 때문에 '구현 -> 리팩토링 해보기 -> 고수들의 답변보기 -> 다시 리팩토링' 의 단계로 공부해보려고 한다.
    며칠 더 하면 좀 더 술술 풀어내는 나를 볼 수 있겠지😁
profile
Don't dream it, be it.

0개의 댓글