본문 바로가기
활동/이노베이션 캠프

[TIL] 230522 - 워밍업기간 첫 출석, 백준 알고리즘 문제 풀이

by gardenii 2023. 5. 24.

워밍업기간 완강팀 일정

5/22(월)~5/31(수)
- 알고리즘 심화 문제 풀기
 
6/1(목)~6/5(월)
- 웹개발 종합반 복습
- SQL / CSS 강의 수강

오늘 한 것

- 인텔리제이 라이센스 등록
- 인테리제이 사용법 숙지
- node.js 입력값 받는 법
- 백준 알고리즘 문제 풀이 : 2839번(설탕 배달)


node.js 입력값 받는 법

  • 사실 원리나 이유 등은 명확히 알지 못했지만, 우선 js로 알고리즘 문제를 풀기 위해 입출력을 하려면 js로만 하기는 힘들기때문에 node.js를 통해야 해서 조금의 준비가 필요한데 좀 더 알게되면 따로 정리해서 글을 써보도록 하겠다.
  • 일단 정리 겸 남겨봄 정확하지 않으니 참고하진 마세요
  • 우선은 입출력을 위해 필요한 코드
  • fs.readFilesync('/dev/stdin') 에 있는 파일을 string으로 변환해준 후 공백문자로 구분하여 이름이 input인 배열로? 받아온다
  • num은 input배열의 첫번째 요소를 int로 변환한 값
const fs = require('fs');
var input = fs.readFileSync('/dev/stdin').toString().split(' ');
var num = parseInt(input[0]);

백준 문제풀이 

2839번: 설탕 배달 (난이도 하)

https://www.acmicpc.net/problem/2839

2839번: 설탕 배달

상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그

www.acmicpc.net

const fs = require('fs');
var input = fs.readFileSync('/dev/stdin').toString().split(' ');
var num = parseInt(input[0]); 
var count = 0;

while(num >= 3){
    if(num % 5 == 0){ // 5의 배수일 때 나머지 값을 전부 5로
        count += num / 5;
        break;
    }
    num -= 3; // 아니면 3만큼 빼줄것 ( 5의 배수가 나올 때 까지 )
    count++;
}
if ( num < 3) // ( 만약에 3만큼 다 뺐는데 나머지가 남았다 -> 갯수가 안 맞는다
    console.log(-1);
else
    console.log(count);

난이도도 하에 문제가 쉬워보였는데 로직을 짜는게 안돼서 혼자 엄청 끙끙거렸다ㅠㅠ
알고리즘은 거의 풀어본 적이 없어서 머릿속에 있는 걸 정리하는 게 정말 어려웠다.
우선 주석과 코드는 팀원분 것 그대로 가져왔는데 좀 더 공부한 뒤 완벽하게 이해하게 되면 수정하도록 하겠다.


일기 

더보기

이노베이션 캠프를 시작한 뒤, 드디어 처음으로 정식(?) 필수 기간인 워밍업 기간이 되어 OT를 진행했다.

그 전 기간이였던 사전캠프는 개인 사정 때문에 참여하지 못해서 아쉬웠는데, 드디어 팀에 배정받고 팀원들과 함께 공부할 수 있다고 생각하니 시작 전부터 조금 기대가 됐다ㅎㅎ

서연 총괄님께서 OT를 진행해주셨는데, 사실 처음에는 설명 노션을 보고 서연님 설명을 들어도 어떻게 진행되는지 감이 안 오고 뭔가 방대해보이는 정리 내용을 보면서 아,,, 진짜 시작이구나 하면서 혼자 겁먹었던 기억이 난다,,,

 

OT에서는 워밍업기간동안 진행될 팀 배정을 확인할 수 있었는데, 나는 사전캠프에 참석하지 못해서 사전캠프 미참석자 그룹으로 분류가 되어 있었다.

다른 팀들은 아마 사전캠프 참석자 중 웹개발종합반 강의 완강 여부로 나누어진 것 같았는데,

미참석자에게도 기간 동안 웹종 강의 완강 숙제가 있었어서 나는 전날 새벽에 열심히 완강을 해 놓은 상태였다. 

분류된 팀별로 조금씩 커리큘럼?이 다르길래 나는 괜히 욕심이 생긴 나머지... 여준 매니저님께 팀 변경이 가능한지 여쭤보게 됐고 결국 완강 팀으로 이동하게 되었다.

그런데 문제는,,, 내가 사전 조사 때 SQL 강의에 체크해 놓은 덕분에 JAVA팀으로 가게 된 것이였다...!

아직 프론트/백을 결정하지 못하긴 했지만 프론트에 마음이 좀 더 기운 상태에, JAVA는 잘 다루지 못해서 팀에 처음 합류했을 때는 많이 당황스러웠다ㅠㅠ

팀원 분들은 다들 사전캠프를 하셨던 분들이라 엄청 멋있고,,, 자연스럽게 알고리즘 풀이를 하고 계셨는데 (팀 변경 때문에 늦게 참여함...) 알고리즘 풀이는 어떻게 하는지,, 인텔리제이가 뭔지,, 페어프로그래밍은 뭔지,, 신기했고 매니저님께 못하겠다고 다시 미참석 팀으로 가고싶다고 했다ㅋㅋㅋㅋ 근데 매니저님께서 그대로 진행하는 편이 더 도움이 될 것 같다고 일단 오늘은 열심히 참여해보시라고 격려해주셨고 팀원분께도 잘 말씀해 주셔서 이틀차인 지금은 완전 좋으신 팀원분들 덕분에 완벽하게 적응한 것 같다 ㅎㅎ 3조 짱!

 

그 후 팀원 중 한 분께서 JS도 가능하다고 하셔서 페어로 돌아가며 Java, JS를 둘 다 사용해가며 알고리즘 풀이를 진행했다.

다들 자바도 하시느라 힘드실텐데 귀찮은 기색도 없이 JS 같이 해주셔서ㅠㅠㅠ 너무 감사했다...

9시까지 스터디를 하고,,, 사실 이 일지를 어제 썼어야 하는데 전날 잠도 조금 자고 힘을 많이 쏟아서 그런지 그대로 기절해버렸다...

이제 일지 제 때 쓸게요...