프로그래머스 코딩 테스트 기초 문제
코드 처리하기
class Solution {
public String solution(String code) {
String answer = "";
int mode = 0; // 기본 mode 값 지정
for (int i = 0;i < code.length();i++){
int c = code.charAt(i); // code 문자열의 단어를 ASCII 코드 값으로 저장
if (mode == 0){
if (c == 49){ // ASCII 코드 49 값은 '1'
mode = 1;
} else if (i%2==0){
answer += code.charAt(i); // i 값이 짝수일 경우 answer 에 문자 추가
}
} else if (mode == 1){
if (c == 49){
mode = 0;
} else if (i%2 == 1){
answer += code.charAt(i); // i 값이 홀수일 경우 answer 에 문자 추가
}
}
}
return answer.equals("") ? "EMPTY" : answer; // 삼항 연산자, answer 가 비어있다면 "EMPTY", 아니면 answer 그대로 리턴
}
}
등차수열 더하기
뭔가 너무 어렵게만 생각하는 듯한 등차수열 더하기
public int solution(int a, int d, boolean[] included) {
int answer = 0;
for (int i = a ; i <= (i + (included.length*(d-1))) ; i += d){
int j = 0;
String s = Boolean.toString(included[j]);
if (s.equals("true")){
answer += i;
}
j++;
}
asd = a + (d * 0);
return answer;
}
등차수열 구하기 - 내 기준 간단한 방법으로 해결
public int solution(int a, int d, boolean[] included) {
int answer = 0;
for(int i = 0 ; i < included.length;i++){
String s = Boolean.toString(included[i]); // Boolean 의 값을 문자열로 변환
if (s.equals("true")){ // 문자열이 true 와 같으면 answer 에 값을 더하기
answer += a + (d * i); // ex) a=3, d=4, 3항이 true 일 경우 3 + (4 * 2)
}
}
return answer;
}
등차수열 구하기 - 더 쉬운 방법 발견
public int solution(int a, int d, boolean[] included) {
int answer = 0;
for(int i = 0 ; i < included.length;i++){
while(included[i]){
answer = a + (d * i);
break;
}
}
return answer;
}
주사위 게임 2
좀 더 압축할 수 있을 거 같은데 모르겠음
public int solution(int a, int b, int c) {
int answer = 0;
if (a == b && b != c){
answer = (a+b+c) * (a*a + b*b + c*c);
} else if (a == c && b != c){
answer = (a+b+c) * (a*a + b*b + c*c);
} else if (b == c && a != b){
answer = (a+b+c) * (a*a + b*b + c*c);
} else if (a == b && b == c){
answer = (a+b+c) * (a*a + b*b + c*c) * (a*a*a + b*b*b + c*c*c);
} else if (a != b && b != c){
answer = a + b + c;
}
return answer;
}
이어 붙인 수
public int solution(int[] num_list) {
int answer = 0;
String s1 = "";
String s2 = "";
for (int i = 0; i < num_list.length;i++){
if(num_list[i] % 2 == 0){
s1 += num_list[i];
} else {
s2 += num_list[i];
}
}
answer = Integer.parseInt(s1) + Integer.parseInt(s2);
return answer;
}
수 조작하기1
switch case 로 풀고 싶었는데 못하다가
다른 분의 정답을 보고 깨달음
public int solution(int n, String control) {
int answer = 0;
for (int i = 0;i<control.length();i++){
char c = control.charAt(i);
if (c == 'w'){
n += 1;
} else if (c == 's'){
n -= 1;
} else if (c == 'd'){
n += 10;
} else if (c == 'a'){
n -= 10;
}
}
answer = n;
return answer;
}
수 조작하기2
public String solution(int[] numLog) {
String answer = "";
for (int i = 1 ; i < numLog.length ; i++){
int a = numLog[i];
int b = numLog[i-1];
if (a - b == 1){
answer += "w";
} else if (a - b == -1){
answer += "s";
} else if (a - b == 10){
answer += "d";
} else if (a - b == -10){
answer += "a";
}
}
return answer;
}
문자열의 뒤에 n글자
public String solution(String my_string, int n) {
String answer = "";
for(int i = my_string.length() - n ; i < my_string.length() ; i++) {
char c = my_string.charAt(i);
answer += c+"";
}
return answer;
}
문자열 뒤에 n글자 - substring 이용하기
public String solution(String my_string, int n) {
String answer = "";
answer = my_string.substring(my_string.length() - n);
return answer;
}
정수 찾기
public int solution(int[] num_list, int n) {
int answer = 0;
for(int i : num_list){
if (i == n){
answer = 1;
break;
} else {
answer = 0;
}
}
return answer;
}
글자 이어 붙여 문자열 만들기
public String solution(String my_string, int[] index_list) {
String answer = "";
for(int i : index_list){
answer += my_string.charAt(i);
}
return answer;
}
카운트 업
public int[] solution(int start_num, int end_num) {
int[] answer = new int[end_num - start_num + 1];
for (int i = 0 ; i < answer.length ; i++){
answer[i] = start_num + i;
}
return answer;
}
n 번째 원소까지
public int[] solution(int[] num_list, int n) {
int[] answer = new int[n];
for (int i = 0 ; i < n ; i++){
answer[i] = num_list[i];
}
return answer;
}
5명씩
public String[] solution(String[] names) {
int a = 0;
if (names.length % 5 == 0){
a = names.length/5;
} else if (names.length % 5 != 0){
a = names.length / 5 + 1; // 5 명씩 묶고 인원이 남을 경우 + 1
}
String[] answer = new String[a];
int b = 0;
for(int i = 0 ; i < a ; i ++){
answer[i] = names[b];
b += 5; // 5 명씩 묶기 위해 추가 정수 변수 선언하여 5 씩 증가
}
return answer;
}
n 보다 커질 때까지 더하기
public int solution(int[] numbers, int n) {
int answer = 0;
for(int i : numbers){
answer += i;
if(answer > n){
break;
}
}
return answer;
}
첫 번째로 나오는 음수
public int solution(int[] num_list) {
int answer = 0;
for(int i : num_list){
if (i < 0){
return answer;
}
answer++;
}
return answer == num_list.length ? -1 : answer;
}
n개 간격의 원소들
public int[] solution(int[] num_list, int n) {
int[] answer = new int[(num_list.length-1) / n + 1];
int a = 0;
for (int i = 0 ; i < answer.length ; i++){
answer[i] = num_list[a];
a+=n;
}
return answer;
}
특정한 문자를 대문자로 바꾸기
public String solution(String my_string, String alp) {
String answer = "";
for(int i = 0;i < my_string.length();i++){
if (my_string.charAt(i) == alp.charAt(0)){ // 만약 alp 글자가 my_string 글자와 같다면
answer += Character.toString(my_string.charAt(i)).toUpperCase(); // my_string 글자를 대문자로 바꿈
} else {
answer += my_string.charAt(i);
}
}
return answer;
}
조건에 맞게 수열 변환하기 1
public int[] solution(int[] arr) {
int[] answer = new int[arr.length];
for(int i = 0 ; i < arr.length ; i++){
if (arr[i] >= 50 && arr[i] % 2 == 0){
answer[i] = arr[i] / 2;
} else if (arr[i] % 2 != 0 && arr[i] < 50){
answer[i] = arr[i] * 2;
} else {
answer[i] = arr[i];
}
}
return answer;
}
배열에서 대소문자 변환하기
public String[] solution(String[] strArr) {
String[] answer = new String[strArr.length];
for(int i = 0 ; i < answer.length;i++){
if (i % 2 == 0){
answer[i] = strArr[i].toLowerCase();
} else {
answer[i] = strArr[i].toUpperCase();
}
}
return answer;
}
문자열 정수의 합
public int solution(String num_str) {
int answer = 0;
for (int i = 0 ; i < num_str.length();i++){
answer += num_str.charAt(i) - 48; // 숫자 0 의 ASCII code 가 48
}
return answer;
}
'혼자 코딩 공부하기' 카테고리의 다른 글
혼자 자바 공부하기 (0) | 2023.11.29 |
---|