Blog

[Algorithm]16 오늘 실수한 부분들과 버블 정렬

Author
Summary
여러가지 모아서 정리!
Category
Study
Tags
Algorithm
Favorite
Memory Date
2023/08/18
Progress Status
Done
Cross Reference Study
Related Media
Related Thought
Related Lessons
tag
날짜
작성자
진행상황
진행 전
태그구분
5 more properties
프로그래머스 알고리즘 문제를 풀면서 틀리거나, 햇갈렸거나, 기억하고싶은것들을 기록했다.
💡
정수 타입별 범위 얼추 이 이정도로 요약 기억하기
얼추 로직은 빨리 구현했는데 오류가 발생해서 어딘가 싶었다. 통과통과가 나오다가 마지막 13,14번째에서 큰 숫자가 테스트 된 것 같다. 제한조건을 잘 보고 혹시나 저 위 범위는 +-를 합친 범위이니 반정도 넘어갈것 같다 하면 long도 생각해야 한다. 기본적으로 타입의 범위를 어느정도 인지하고있어야겠다.
class Solution { //input x,n ->random //cal /* 10 , [1,2,3,4,5,6,7,8,9,10] 10 n, [x,x+x,(x+x)+x, ... n개] */ //out //if x=3 //3, 3+3, (3+3)+3 //x, x+x, (x+x)+x public long[] solution(int x, int n) { long[] arr = new long[n]; long j=0; if(x < -10000000 && x > 10000000){ return new long[0]; } for(int i=0; i<arr.length; i++){ j += (long)x; arr[i] = j; } return arr; } }
Java
복사
💡
반복문에서 break; continue; 의 위치를 정확히 하자.
이 또한 반복문이나 조건문 등 제어문 틀은 잡았지만 탈출에 대한 조건을 정확하게 위치하지 못했다. 한번만 더 대입해보면서 가상으로 테스트 할 필요가 있다.
💡
문자열(String)클래스와 관련된 것들을 좀 더 익숙해져야 겠다. 좀 많이 사용되는 것은 능숙하게 생각해 내야 할 것 같다. 이것 말고도 자주 타입간의 변환, 숫자간의 타입 변환 등을 해보면서 능숙해져야 한다.
💡
반복문에 초기값 타입 계속 빼먹는다. 정신차려라.
💡
버블정렬(순차적으로 비교, 조건에 따라 교환orNot)을 하나씩 작성하면서 원리를 이해했다. temp를 만들어서 넣고 교대로 넣는것, 이전에 배웠었고 확실히 기억하는데 버블정렬이었던것이 기억안났었다. 아하 이거였구나 했다.
우선 처음 주어진 값이 long이었기 때문에 → 문자열로 변환 → 문자 배열 타입으로 변환을 거쳐서 버블정렬에 들어가야 한다.
만약 오름차순이면 조건문이 변경 될 것이다 지금은 큰 경우 뒤로 보내는 것이기 때문에 오름차순이다. 아무것도 안보고 구성했을땐 얼추 j와 j+1 인덱스를 교환해야 되는 것 까지는 기억났는데, temp를 만들고 거기에 넣었다가 교대하는 방식이었다는 것을 ChatGPT의 힌트를 통해 회상 할 수 있었다.
마찬가지로 반환할 값을 보고 역순 또는 반환 타입에 맞추어서 다시 형변환을 해야 하는것도 잊지 말자.
class Solution { //input // ex) long 15 -> Integer.toString(n) // => 51 // //output //answer public long solution(long n) { long answer = 0; String strNum = Long.toString(n); char[] arr = strNum.toCharArray(); //ex 45291 => 4,5,2,9,1 //=>if([i 0]<[i+1 1]) { // [i+1] = [i]; //}else if([i 0]>[i+1 1]){ // continue; //} for(int i=0;i<arr.length;i++){ for(int j=0;j<arr.length-1;j++){ if(arr[j]<arr[j+1]) { char temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } String sortedStr = new String(arr); answer = Long.parseLong(sortedStr); return answer; } }
Java
복사