등차수열의 특정한 항만 더하기
https://school.programmers.co.kr/learn/courses/30/lessons/181931
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
class Solution {
public int solution(int a, int d, boolean[] included) {
int answer = 0;
for(int i=0; i<included.length; i++){
if(included[i] == true) {
answer += a+d*i;
}
}
return answer;
}
}
등차수열-> a+d*0, a+d*1, a+d*2, ....
주사위 게임 2
https://school.programmers.co.kr/learn/courses/30/lessons/181930
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
class Solution {
public int solution(int a, int b, int c) {
int answer = 0;
if(a!=b && a!=c && b!=c) {
answer = a + b + c;
} else if(a==b && b!=c) {
answer = (a + b + c) * (a*a + b*b + c*c);
} else if(a==c && a!=b) {
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);
}
return answer;
}
}
중간을 그냥
else if (a == b || a == c || b == c) {
이렇게 해버리면 됐었구나..!
원소들의 곱과 합
https://school.programmers.co.kr/learn/courses/30/lessons/181929
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
class Solution {
public int solution(int[] num_list) {
int a = 1; //모든 원소들의 곱
int b = 0; //모든 원소들의 합의 제곱
for(int num : num_list) {
a *= num;
b += num;
}
b = b*b;
int answer = a < b ? 1 : 0;
return answer;
}
}
이어 붙인 수
https://school.programmers.co.kr/learn/courses/30/lessons/181928
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
class Solution {
public int solution(int[] num_list) {
int answer = 0;
String odd = ""; //홀수만
String even = ""; //짝수만
for(int num : num_list) {
if (num % 2 == 1) {
odd += (char)(num+'0');
} else {
even += (char)(num+'0');
}
}
answer = Integer.parseInt(odd) + Integer.parseInt(even);
return answer;
}
}
num + "";
이렇게 해서 문자열로 만들어줘서 더해줘도 되는거였다
마지막 두 원소
https://school.programmers.co.kr/learn/courses/30/lessons/181927
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
class Solution {
public int[] solution(int[] num_list) {
int n = num_list.length;
int[] answer = new int[n+1];
int result = 0; // 새로 들어갈 마지막 원소
result = num_list[n-1]>num_list[n-2] ? num_list[n-1]-num_list[n-2] : num_list[n-1] * 2;
for(int i = 0; i<n+1; i++){
if(i!=n) {
answer[i] = num_list[i];
} else {
answer[i] = result;
}
}
return answer;
}
}
수 조작하기 1
https://school.programmers.co.kr/learn/courses/30/lessons/181926
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
class Solution {
public int solution(int n, String control) {
for(int i=0; i<control.length(); i++){
if(control.charAt(i) == 'w') {
n += 1;
} else if(control.charAt(i) == 's') {
n -= 1;
} else if(control.charAt(i) == 'd') {
n += 10;
} else if(control.charAt(i) == 'a') {
n -= 10;
}
}
return n;
}
}
다른 사람 풀이
class Solution {
public int solution(int n, String control) {
int answer = n;
for(char ch : control.toCharArray()) {
switch(ch) {
case 'w': answer += 1; break;
case 's': answer -= 1; break;
case 'd': answer += 10; break;
case 'a': answer -= 10; break;
default:break;
}
}
return answer;
}
}
char배열에 넣고 돌리는 방법도 있었다 그리고 switch-case문을 쓰니 코드가 더 깔끔해보인다
수 조작하기 2
https://school.programmers.co.kr/learn/courses/30/lessons/181925
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
class Solution {
public String solution(int[] numLog) {
String answer = "";
int n = numLog[0];
for(int i=1; i<numLog.length; i++) {
if(numLog[i] == n+1) {
answer += "w";
n = numLog[i];
} else if(numLog[i] == n-1) {
answer += "s";
n = numLog[i];
} else if(numLog[i] == n+10) {
answer += "d";
n = numLog[i];
} else if(numLog[i] == n-10) {
answer += "a";
n = numLog[i];
}
}
return answer;
}
}
수열과 구간 쿼리 3
https://school.programmers.co.kr/learn/courses/30/lessons/181924
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
import java.util.*;
class Solution {
public int[] solution(int[] arr, int[][] queries) {
int[] answer = Arrays.copyOf(arr, arr.length);
for(int i=0; i<queries.length;i++){
int a = queries[i][0];
int b = queries[i][1];
int a_copy = answer[a];
int b_copy = answer[b];
answer[a] = b_copy;
answer[b] = a_copy;
}
return answer;
}
}
⭐
가장 먼저 풀고 가장 먼저 작성했던 부분이다 이때 많이 헤매고 여러가지를 찾아봐서 그런지 개념이 좀 잡혀서 위에 푼 문제들은 후루룩 풀 수 있었다 👍
코드 처리하기
https://school.programmers.co.kr/learn/courses/30/lessons/181932
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
틀린 코드
//import java.util.*;
class Solution {
public String solution(String code) {
//ArrayList<String> ret = new ArrayList<>();
String answer = "";
int mode = 0;
for(int i=0; i<code.length(); i++){
if(mode==0){
if (code.charAt(i) == '1') { //code.charAt(i) == "1"
mode++;
}
else if (i%2==0){
//ret.add(code.charAt(i));
answer += code.charAt(i);
} else {
continue;
}
}
else {
if (code.charAt(i) == '1') {
mode--;
}
else if (i%2==1){
answer += code.charAt(i);
} else {
continue;
}
}
}
// if (ret.size() == 0) {
// return "ENPTY";
// } else {
// String answer = String.join("", ret);
// return answer;
// }
answer = answer.length() == 0 ? "ENPTY" : answer;
return answer;
}
}
주석으로 남겨놓은건 헤맸던 기록이자 이제 절대 안 까먹을거같은 바보같은 실수들,,
1
if (code.charAt(i) == "1")
String - " "
char - ' '
각각 다르다
검색하다보니 나랑 같은 과정을 겪은 사람이 있었다
https://velog.io/@sungmo738/JAVA-char%ED%98%95-%EB%B9%84%EA%B5%90
JAVA char형 비교
문제풀다가 문자열하나하나씩 비교할일이 생겼는데str.charAt(i) == "1"charAt은 char이고"1" 이건 string 이라서 비교가 안된다.그래서 하나를 형변환을 해서 비교를 하고 개 뻘짓을 했는데str.charAt(i) == '1
velog.io
나랑 정말 똑같다 1을 비교하고있는거보니 같은 문제일까??
암튼 나도 equlas()도 써보고 string으로도 바꿔서도 해보고 참 다양하게 돌고돌았다
자바는 너무 깐깐한거같음 그냥 ''이거든 ""이거든 그냥 문자 비교해주면 안되는걸까😢😢😢,,,,, 당연히 안되겠지 이제 절대 안까먹을거같다
2
ArrayList<String> ret = new ArrayList<>();
.
.
ret.add(code.charAt(i));
.
.
if (ret.size() == 0) {
return "ENPTY";
} else {
String answer = String.join("", ret);
return answer;
}
ArrayList에는 char를 넣을 수 없나 하면서 string으로 바꾸고 여러가지 또 고쳐보면서 엄청난 뻘짓을 했다,, 그러다가 갑자기 깨달았다 그냥 answer 문자열에 +char값 해주면 되는거잖아? 라는것을..............................🤦♀️🤦♀️🤦♀️🤦♀️🤦♀️🤦♀️🤦♀️🤦♀️
처음 생각은
계속 값을 추가해줘야하는데 자바에서 배열은 추가가 자유롭지 않으니까 추가가 되는걸 써야겠다->그럼 뭐로 해야하지?->배열과 리스트 차이 공부->그럼 추가가 자유로운 리스트를 써야겠다
이랬다
그렇게 엄청난 뻘짓이 시작됐고......................... 정말 크게 돌고돌아돌아돌아 많은 시간을 날리고 깨달았다
리스트를 만들 필요도 없었고 그냥 문자열에 +해서 char값을 추가만 해주면 되는 간단한 문제였다ㅠㅠㅠㅠ
그치만 이 한문제로 배운건 많으니까 뿌듯하다................라고 긍정적으로 생각해보기로 했다🙃🙃 근데 날린 시간이 너무 길어서 마음이 아프다
아직 제대로 몰라서 더 복잡하게 생각하는 느낌,,
자바랑 이별하고 싶다
암튼 많은 삽질끝에 정답 가까이 다가갔다
어딘가 걸러내지 못하는게 있나보다 다시 차근차근 생각하기 시작,,
이 문제에서 빨리 벗어나고싶다
.
.
.
최종코드
class Solution {
public String solution(String code) {
String answer = "";
int mode = 0;
for(int i=0; i<code.length(); i++){
if(mode==0){
if (code.charAt(i) == '1') {
mode++;
}
else if (i%2==0){
answer += code.charAt(i);
} else {
continue;
}
}
else {
if (code.charAt(i) == '1') {
mode--;
}
else if (i%2==1){
answer += code.charAt(i);
} else {
continue;
}
}
}
answer = answer.length() == 0 ? "EMPTY" : answer;
return answer;
}
}
코드 다시 보고 천천히 적으면서 또해보고 반복했는데도 틀린 부분이 없어보였다 예외생각해도 더이상 없고,, 그래서 결국 chapGPT한테 물어봤고 내 실수를 알아낼 수 있었다
🤦♂️🤦♀️🤦♂️🤦♀️🤦♂️🤦♀️🤦♂️🤦♀️🤦♂️🤦♀️🤦♂️🤦♀️🤦♂️🤦♀️🤦♂️🤦♀️🤦♂️🤦♀️🤦♂️🤦♀️🤦♂️🤦♀️🤦♂️🤦♀️🤦♂️🤦♀️🤦♂️🤦♀️
진짜 열받는다ㅠㅠㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
뭔 엠비티아이도 아니고 ENP뭔데,, 정말정말 어이없는 실수였다
이거 붙잡고 밤샐뻔했는데 챗지피티가 살려줬다
드디어 끝
오늘의 교훈 : 쓸데없이 어렵게 생각하지 말자🤦♀️
'코딩테스트-알고리즘 > 도전' 카테고리의 다른 글
2023.12.25 - 6문제 (0) | 2023.12.25 |
---|---|
2023.12.24 - 4문제 (0) | 2023.12.24 |
2023.12.21 - 10문제 (0) | 2023.12.21 |
2023.12.20 - 12문제 (1) | 2023.12.20 |
12월 31일까지 도전 (0) | 2023.12.20 |