오늘의 목표

더보기

✔️ 프로그래머스 코테 문제 풀기

✔️ 팀 프로젝트 완성 및 발표


⏱️ 오늘의 일정

프로그래머스 코테 문제 풀기

팀 프로젝트 완성 및 발표


📜 프로그래머스 코테 문제 풀기

 

달리기 경주

 

https://github.com/YamSaeng/AlgorithmCodingTest/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/1/178871.%E2%80%85%EB%8B%AC%EB%A6%AC%EA%B8%B0%E2%80%85%EA%B2%BD%EC%A3%BC

 

AlgorithmCodingTest/프로그래머스/1/178871. 달리기 경주 at main · YamSaeng/AlgorithmCodingTest

This is an auto push repository for Baekjoon Online Judge created with [BaekjoonHub](https://github.com/BaekjoonHub/BaekjoonHub). - YamSaeng/AlgorithmCodingTest

github.com

 

문제에서 설명해준 대로 알고리즘을 구성하니 풀 수 있었다.

 

function solution(players, callings) {
    let answer = {};

    // player들의 이름을 key값으로, index를 value로 해서 담아둠
    for (let i = 0; i < players.length; i++) {
        answer[players[i]] = i;
    }

    for (let i = 0; i < callings.length; i++) {
        const index = answer[callings[i]];
        const temp = players[index - 1];

        // 해당 index와 이전 index의 value 값을 바꿈
        players[index - 1] = callings[i];
        players[index] = temp;

        // answer의 index도 갱신
        answer[callings[i]] = index - 1;
        answer[temp] = index;
    }

    return players;
}

 

Javascript 객체를 이용해 풀었다.

 

📜 팀 프로젝트 완성 및 발표

 

오늘 팀 프로젝트를 완성하고 제출했다.

 

오후 2시부터 발표회가 있어서 줌으로 참가했다.

하루 직전까지 버그가 나서 애태우며 원인을 찾고 문제를 해결했다.

 

이번 팀 프로젝트인 타워 디펜스 Git

https://github.com/YamSaeng/TowerDefence

 

GitHub - YamSaeng/TowerDefence

Contribute to YamSaeng/TowerDefence development by creating an account on GitHub.

github.com

 

import { handlerEvent } from "../clientHandler/handler.js";

class UserSocket {
  static gInstance = null;
  // 스테이지 정보들 저장
  constructor() {
    this.socket = null;
  }
  static getInstance() {
    if (!this.gInstance) {
      this.gInstance = new UserSocket();
    }
    return this.gInstance;
  }
  Connect() {
    let somewhere;
    this.socket = io(`http://localhost:3000`, {
      auth: {
        token: somewhere, // 토큰이 저장된 어딘가에서 가져와야 합니다!
      },
    });
    // 이벤트 핸들러
    this.socket.on("event", (data) => handlerEvent(data));
    // 응답 패킷 이벤트 할당
    this.socket.on("response", (data) => {
      console.log(data);
    });
  }
  // 서버에 패킷 전송
  SendEvent(handlerId, payload) {
    this.socket.emit("event", {
      handlerId,
      payload,
      accessToken: localStorage.getItem("authorization"),
    });
  }
}
export default UserSocket;

 

내가 소스를 소개한 부분은 싱글톤 부분이였는데,

자바스크립트에서 싱글톤을 구성하다보니 생성자를 막을 수 없었다..

이 점을 피드백을 받긴했는데.. c++에서는 생성자를 private: 으로 해주면 되는데,

자바스크립트에서는 어떻게 막아야하는지 구글링 해도 나오지를 않아 골치가 아프다 ㅠㅠ

 

회고

이번 팀 프로젝트는 저번 프로젝트와는 다른 점이 있었다.

저번 프로젝트는 express로 진행한 프로젝트였는데, 프로젝트를 진행함에 있어 각각 router를 맡았기 때문에

역할 분배가 매우 쉬웠다.

 

하지만 이번에는 정말 같이 작업하는 부분이 많았는데, 그런만큼 사람들의 생각을 조율하는 과정이 힘들었다.

특히, 팀원 모두가 같은 주제를 가지고 회의를 하고, 같은 의견으로 결론이나더라도 문서화 하지 않으면

결국에는 서로 다른 생각을 가지게 된다는 점을 아주 깊이 깨달았다.

 

정말 자세하게 a 부터 z 까지 문서화 시켜 서로가 이해한 점이 같은지 확인하고,

나중에 두번 세번 확인을 위해 문서화를 꼭 해야겠다.

사실 저번 프로젝트에서는 git 작업을 함에 있어서, 앞에서 언급한것과 같이 각각 맡은 파트가 분명하기 때문에

충돌하는 부분도 거의 없었다. 그래서 git pull을 배웠지만, 거의 pull을 날리면 그냥 받는 식이라 연습이 되지는 않았다.

 

이번에는 충돌도 나고, 충돌나는 거를 git 홈페이지에서 고치면서 서로 의견을 주고 받는 과정이 매우 좋았다.

 

 

+ Recent posts