배열 두 배 만들기
class Solution {
public int[] solution(int[] numbers) {
int[] answer = new int[numbers.length];
int i=0;
for(int num : numbers){
answer[i]= num*2;
i++;
}
return answer;
}
}
배열 원소의 길이
class Solution {
public int[] solution(String[] strlist) {
int[] answer = new int[strlist.length];
for(int i=0;i<strlist.length;i++)
answer[i]=strlist[i].length();
return answer;
}
}
점의 위치 구하기
class Solution {
public int solution(int[] dot) {
int answer = 0;
int x = dot[0] > 0
? 1
: 0;
int y = dot[1] > 0
? 1
: 0;
if(x==1 && y==1){answer=1;}
else if(x==0 && y==1){answer=2;}
else if(x==0 && y==0){answer=3;}
else if(x==1 && y==0){answer=4;}
return answer;
}
}
아이스 아메리카노
class Solution {
public int[] solution(int money) {
int[] answer = new int[2];
int i = 0;
while(true){
if(money < i*5500){
break;
}else{
answer[0] = i;
answer[1] = money-(5500*i);
}
i++;
}
return answer;
}
}
굳이 복잡하게 할 필요 없이, 잔 수와 남는 돈을 연산자 /, % 를 이용하여 계산했으면 됐다.
삼각형의 완성 조건(1)
import java.util.*;
class Solution {
public int solution(int[] sides) {
int answer = 0;
Arrays.sort(sides);
answer = sides[sides.length-1] < sides[0]+sides[1]
?1
:2;
return answer;
//가장 큰 변이 두변의 합에 해당하는 수보다 작아야 삼각형 가능
}
}
문자 반복 출력하기
class Solution {
public String solution(String my_string, int n) {
String answer = "";
String s;
for(int i=0;i<my_string.length();i++){
s = String.valueOf(my_string.charAt(i));
answer += s.repeat(n);
}
return answer;
}
}
이 문제는 문자열을 다루는 클래스들이 많아 풀이 방법이 다양하게 있었다.
자주 사용하는 내부 함수에 대해서 메모해두고 다 외우지는 못하더라도 어떤 클래스에 어떤 기능이 있는지 정도는 인지하고 있을 필요가 있을 것 같다.
편지
class Solution {
public int solution(String message) {
return (message.length())*2;
}
}
특정 문자 제거하기
class Solution {
public String solution(String my_string, String letter) {
String answer = "";
return my_string.replaceAll(letter,"");
}
}
유용하게 사용할 수 있는 내부함수들이 많이 있는 것 같다.
짝수는 싫어요
class Solution {
public int[] solution(int n) {
int Arraylength = n%2==0
? n/2
: (n/2)+1;
int[] answer = new int[Arraylength];
int OddNum = 1;
for(int i=0;i<Arraylength;i++){
answer[i]=OddNum;
OddNum+=2;
}
return answer;
}
}
배열의 사이즈를 지정해줘야만 하는 불편함을 덜기 위해서, ArrayList 클래스를 많이들 사용하는 것 같다.
제너릭스에 대해서 아직 모르기 때문에 쓰지 않고 있었는데 조금은 사용해 볼 필요가 있다
제곱 수 판별하기
class Solution {
public int solution(int n) {
for(int i=1; i*i<=n;i++){
if(i*i==n){return 1;}
}
return 2;
}
}
반복문으로 해당 제곱 수를 판별하도록 코드를 작성했는데, 알고보니 내부 함수 중에 제곱 수를 판별하여 Boolean 타입으로 받을 수 있는 Math.sprt() 가 존재하였다. 메모해두고 사용해야겠다.
자릿 수 더하기
class Solution {
public int solution(int n) {
int answer = 0;
String str= String.valueOf(n);
for(int i=0; i<str.length();i++){
answer += Integer.parseInt(str.substring(i,i+1));
}
return answer;
}
}
직관적으로 한자리씩 나누어서 계산을 진행했는데, 연산자 %와 /를 이용한 방법도 존재했다. 사고를 유연히 가져야겠다.
배열의 유사도
class Solution {
public int solution(String[] s1, String[] s2) {
int answer = 0;
for(String str : s1){
for(String str2 : s2){
if(str.equals(str2)){answer++;}
}
}
return answer;
}
}
문자열 안에 문자열
class Solution {
public int solution(String str1, String str2) {
str1.contains(str2);
if(str1.contains(str2)){
return 1;
}else{return 2;}
}
}
좀 더 간단하게 삼항연산자를 사용하여 한 줄로 줄인 후에, 바로 리턴 값으로 넘겨줄 수 있었을 것 같다.
2주차 후기
내부 함수의 중요성에 대해서 깨닫는 계기가 되었다.
내가 알고 있는 기능들에 대해서도 온전히 활용하고 있지 못하다는 생각이 든다.
삼항 연산자나, 사칙 연산자들에 대해서도 더 다양하게 활용하여 코드를 작성할 수 있었을 것이다.
좀 더 유연한 사고로 어떻게 하면 더 간단한 코드를 작성할 수 있을지 고민해봐야겠다.
다른 사람들의 풀이를 보면 stream 이라는 함수를 많이 사용하는데, 어떻게 사용하는지 궁금하다.
자바의 정석 후반부에 나와있는 것 같은데 빨리 진도를 나가봐야겠다.
이번 주에는 스파르타 코딩클럽 웹개발 종합반 과정을 수강하는 관계로 자바 쪽에 많이 신경을 쓰지 못했다.
해당 과정을 모두 완료하였기 때문에 3주차에는 자바에 좀 더 무게를 두고, 코테 문제도 많이 풀어볼 생각이다.
'코딩 테스트 문제 풀이 > 프로그래머스 lv 0' 카테고리의 다른 글
프로그래머스 코딩 테스트(lv 0) 문제 풀이 - 4 (0) | 2022.12.24 |
---|---|
프로그래머스 코딩 테스트(lv 0) 문제 풀이 - 3 (1) | 2022.12.11 |
프로그래머스 코딩 테스트(lv 0) 문제 풀이 - 1 (0) | 2022.11.26 |