240305

Regular Kim·2024년 3월 10일
0

회고

목록 보기
32/66

240305 회고 💬

이번 주에 회사 팀원들과 회식을 했다. 오랜만에 소고기를 먹었더니 기분이 좋았다. 요즘 회사 일에 회의를 느끼고 있었다. 그래서 일에 집중도 못 하고 불안불안한 상태로 회사에 다니고 있다. 그런데 회식을 기회로 회사 분들과 이런저런 이야기를 하면서 많은 위로를 받았다. 이렇게 친절한 사람들이라니! 감사한 분들이다.

Keep 👍

  • 알고리즘 문제 풀이를 연속 7일 해냈다. 며칠째 진행 중인지 확인해 보니 149일째 하고 있다. 😘
    - 1244 문제 풀이를 진행했다. 해당 문제에서 찾을 수 있는 반례는 다 찾아서 정답을 확인 했는데 통과하지 못했다. 뭔가 놓친 포인트가 있었나 보다. 결국 찜찜하게 두고 다른 문제로 갈아탔다.
    - 11292 위 문제를 포기하고 시도한 다른 문제이다. 어렵지 않았다. 문제 설명을 들으면 이렇게 저렇게 풀어야겠다 라고 아이디어가 바로 떠오를 정도의 쉬운 문제였다.
    - K번째 수 실버 5 문제라기에는 너무 쉬운 문제였다. 숫자들이 많이 들어오길래 시간 초과가 날걸 기대하고 일단은 쉽게 풀이를 시도했다. 근데 풀렸다. 😘
    - 분수 찾기 실버 5 문제라고 쉽게 봤다가 고생 좀 했다. 인덱스 규칙이 꽤 복잡하다. 그 규칙 찾는데 시간을 대부분 사용했다. 규칙 찾는 부분이 좀 까다롭긴 하지만 규칙만 일단 찾으면 이후 계산은 쉬운 편이다.
  • 토이프로젝트는 조금 진행했다. 지금 node.js 로 프로젝트를 만들고 있다. Get Request 기본 요청 처리 로직을 제작 중이다. 제작하면서 필요한 request, response 객체 공부도 같이 진행했다.
  • CS 공부는 토이 프로젝트를 위해 잠시 쉬어가고 있다.
  • 운동은 많이 못했다. 야근이 좀 있었고 다른 일정들이 꽤 겹쳐서 매일 운동하기는 아쉽지만 해내지 못했다. 다음 주에는 잘 하기를 다짐해 본다.
  • 회사 스터디도 일정이 맞지 않아 진행하지 못했다. 다음 주에 회사 분들과 일정 조율을 다시 해보려고 한다.
  • 주말마다 조금씩 독서도 하고 있다. 현재 "프로그래머의 길 멘토에게 묻다" 를 읽고 있다.
  • 출퇴근 공부로 자바 강의를 듣고 있다. 어려운 강의는 아니고 기초 강의이다. 이번 주에는 생성자, 패키지, 접근제어자 부분을 수강했다.

Try 🧚

  • 원하는 토이 프로젝트 주제를 찾았다. 해당 주제로 프로젝트를 다시 시작할 예정이다.

HELP🙏

위의 백준 1244번 문제 제출 코드이다. 뭐가 문제인지 고민 중이다.


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {

    public static void main(String[] args) {
        try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {

            Solution s = new Solution();
            System.out.println(s.solution(getLightBalls(br), getStudents(br)));

        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    private static int[] getLightBalls(BufferedReader br) throws IOException {
        int len = Integer.parseInt(br.readLine());
        int[] lightBalls = new int[len + 1];

        StringTokenizer st = new StringTokenizer(br.readLine(), " ");
        for (int i = 1; i < lightBalls.length; i++) {
            lightBalls[i] = Integer.parseInt(st.nextToken());
        }
        return lightBalls;
    }

    private static int[][] getStudents(BufferedReader br) throws IOException {
        int len = Integer.parseInt(br.readLine());
        int[][] students = new int[len][2];

        for (int i = 0; i < len; i++) {
            StringTokenizer st = new StringTokenizer(br.readLine(), " ");
            int sex = Integer.parseInt(st.nextToken());
            int target = Integer.parseInt(st.nextToken());
            students[i][0] = sex;
            students[i][1] = target;
        }
        return students;
    }
}

class Solution {

    public String solution(int[] lightBalls, int[][] students) {
        Calculator c = new Calculator(lightBalls, students);
        return c.getLightBalls();
    }

    class Calculator {

        int[] lightBalls;
        int[][] students;

        public Calculator(int[] lightBalls, int[][] students) {
            this.lightBalls = lightBalls;
            this.students = students;
        }

        public String getLightBalls() {
            calc();
            StringBuilder result = new StringBuilder();
            for (int i = 1; i < this.lightBalls.length; i++) {
                result.append(this.lightBalls[i]);
                if(i % 20 == 0) result.append("\n");
                else if(i != this.lightBalls.length - 1) result.append(" ");
            }
            return result.toString();
        }

        private void calc() {
            for (int[] student : students) {
                if(student[0] == 1) maleOper(student[1]);
                else femaleOper(student[1]);
            }
        }

        private void maleOper(int target) {
            for (int i = target; i < this.lightBalls.length; i+= target) {
                switchLightBall(i);
            }
        }

        private void femaleOper(int target) {
            switchLightBall(target);
            int widening = 1;
            while (isConditionMetLightBalls(target - widening, target + widening)) {
                switchLightBall(target - widening);
                switchLightBall(target + widening);
                widening++;
            }
        }

        private boolean isConditionMetLightBalls(int x, int y) {
            return 0 <= x && x < this.lightBalls.length && 0 <= y && y < this.lightBalls.length && this.lightBalls[x] == this.lightBalls[y];
        }

        private void switchLightBall(int target) {
            this.lightBalls[target] = this.lightBalls[target] == 1 ? 0 : 1;
        }
    }
}



extra 😀

K번째 수

import java.io.*;
import java.util.*;

public class Main{
    public static void main(String[] args){
        try(BufferedReader br = new BufferedReader(new InputStreamReader(System.in))){
            
            Input ip = getInput(br);
            
            Solution s = new Solution();
            System.out.println(s.solution(ip.nums, ip.target));
            
        }catch(IOException e){
            throw new RuntimeException(e);
        }
    }
    
    private static Input getInput(BufferedReader br) throws IOException{
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");
        int len = Integer.parseInt(st.nextToken());
        int target = Integer.parseInt(st.nextToken());
        
        int[] nums = new int[len];
        
        st = new StringTokenizer(br.readLine(), " ");
        for(int i = 0; i < len; i++){
            nums[i] = Integer.parseInt(st.nextToken());
        }
        return new Input(nums, target);
    }
}

class Solution{

	public int solution(int[] nums, int target){
		Arrays.sort(nums);
		return nums[target - 1];
	}
}

class Input{
    
    int[] nums;
    int target;
    
    public Input(int[] nums, int target){
        this.nums = nums;
        this.target = target;
    }
}

분수 찾기

import java.io.*;  
import java.util.*;  
  
public class Main {  
  
    public static void main(String[] args) {  
        try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {  
  
            Solution s = new Solution();  
            System.out.println(s.solution(getInput(br)));  
  
        } catch (IOException e) {  
            throw new RuntimeException(e);  
        }  
    }  
  
    private static int getInput(BufferedReader br) throws IOException {  
        return Integer.parseInt(br.readLine());  
    }  
}  
  
class Solution {  
  
    public String solution(int target) {  
        return getValueOfIndexedTarget(getIndexedLst(target), target);  
    }  
  
    private List<Integer> getIndexedLst(int target) {  
        List<Integer> lst = new ArrayList<>();  
        int input = 1;  
        int differ = 1;  
        while (input <= target) {  
            lst.add(input);  
            input += differ;  
            differ++;  
        }  
        return lst;  
    }  
    private String getValueOfIndexedTarget(List<Integer> indexedList, int target) {  
        int lastElem = indexedList.get(indexedList.size() - 1);  
        int lastIndex = indexedList.indexOf(lastElem);  
        return getValue(lastIndex, target - lastElem);  
    }  
  
    private String getValue(int lastIndex, int diff) {  
        if(lastIndex % 2 == 0) return getEvenIndexValue(lastIndex, diff);  
        return getOddIndexValue(lastIndex, diff);  
    }  
  
    private String getEvenIndexValue(int lastIndex, int diff) {  
        int child = lastIndex + 1;  
        int parent = 1;  
        for (int i = 0; i < diff; i++) {  
            child--;  
            parent++;  
        }  
        return child + "/" + parent;  
    }  
  
    private String getOddIndexValue(int lastIndex, int diff) {  
        int child = 1;  
        int parent = lastIndex + 1;  
        for (int i = 0; i < diff; i++) {  
            child++;  
            parent--;  
        }  
        return child + "/" + parent;  
    }  
}
profile
What doesn't kill you, makes you stronger

0개의 댓글