프로그래머스 (수 조작하기 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 연습)
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());
}
}
}
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;
}
}
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});
}
}