매일 Algorithm

신재원·2023년 5월 11일
0

Algorithm

목록 보기
119/243

프로그래머스 (수 조작하기 2)

public class problem394 {
    class Solution {
        public String solution(int[] numLog) {
            StringBuilder sb = new StringBuilder();

            for (int i = 1; i < numLog.length; i++) {
                // 배열 값의 차이
                int temp = numLog[i] - numLog[i - 1];

                if (temp == 1) {
                    sb.append("w");
                } else if (temp == -1) {
                    sb.append("s");
                } else if (temp == 10) {
                    sb.append("d");
                } else if (temp == -10) {
                    sb.append("a");
                }
            }
            return sb.toString();
        }
    }
}

프로그래머스 (문자열 뒤집기)

public class problem395 {
    class Solution {
        public String solution(String my_string, int s, int e) {
            char[] answer = my_string.toCharArray();

            int start = s;
            int end = e;

            // 마지막 인덱스가 시작 인덱스보다 클때까지
            while (start < end) {
                String[] str = my_string.split("");

                char temp = answer[start];
                answer[start] = answer[end];
                answer[end] = temp;

                start++;
                end--;
            }
            return String.valueOf(answer);
        }
    }
}

프로그래머스 (수열과 구간 쿼리 1)

public class problem396 {
    class Solution {
        public int[] solution(int[] arr, int[][] queries) {
            int[] answer = new int[arr.length];

            for (int i = 0; i < queries.length; i++) {
                int start = queries[i][0];
                int end = queries[i][1];

                // start 인덱스부터, end 인덱스 까지 arr 배열 값 증가
                for (int j = start; j <= end; j++) {
                    arr[j] += 1;
                }
            }

            for (int i = 0; i < answer.length; i++) {
                answer[i] = arr[i];
            }

            return answer;
        }
    }
}

코드업 3108 (OOP 연습)

  • Controller
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class Controller {
    private List<Student> students = new ArrayList<>();

    public void process(String input) {
        Student student = makeAStudent(input);

        // 파라미터로 들어온 student의 코드가 I일경우와 D일경우를 나눠서 반환
        if (student.getCode().equals("I")) {
            addStudent(student);
        } else if (student.getCode().equals("D")) {
            deleteStudent(student);
        }
    }


    private Student makeAStudent(String input) {
        String[] splitString = input.split(" ");
        // new 연산자를 통해 Student 반환 (저장)
        return new Student(splitString[0],
                Integer.parseInt(splitString[1]), splitString[2]);
    }

    private boolean isExists(Student pStudent) {
        for (Student student : students) {
            if (pStudent.getTestId() == student.getTestId()) {
                return true;
            }
        }
        return false;
    }

    // 객체 students에 추가 로직
    public void addStudent(Student student) {
        if (!isExists(student)) {
            students.add(student);
        }
    }

    // 파라미터의 pStudent와 객체 students의 testId를 비교 검증한다.
    public void deleteStudent(Student pStudent) {
        for (int i = 0; i < students.size(); i++) {
            if (students.get(i).getTestId() == pStudent.getTestId()) {
                students.remove(i);
                break;
            }
        }
    }

    public void printStudent(int[] arr) {
        // 정렬
        // testId에 대해 내림차순으로 정렬
        Collections.sort(students, new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o2) {
                return o1.getTestId() - o2.getTestId();
            }
        });

        for (int i = 0; i < arr.length; i++) {
            Student student = students.get(arr[i] - 1);
            System.out.printf("%s %s \n", student.getTestId(),
                    student.getName());
        }
    }
}
  • Student
public class Student {
    private String code;
    private int testId;
    private String name;

    public Student(String code, int testId, String name) {
        this.code = code;
        this.testId = testId;
        this.name = name;
    }

    public String getCode() {
        return code;
    }

    public int getTestId() {
        return testId;
    }

    public String getName() {
        return name;
    }
}
  • Main
public class Main {
    // 호출과 생성만
    public static void main(String[] args) {
        Controller controller = new Controller();

        controller.process("I 1011 한라산");
        controller.process("I 999 백두산");
        controller.process("I 999 오대산");
        controller.process("D 999 백두산");
        controller.process("I 800 백두산");
        controller.process("D 500 한라산");
        controller.process("I 900 남산");
        controller.process("I 950 금강산");
        controller.process("I 1205 지리산");
        controller.process("I 700 북한산");
        controller.printStudent(new int[]{1, 2, 4, 5, 6});

    }
}

0개의 댓글