본문 바로가기

알고리즘9

[알고리즘] 숫자를 뒤집기 숫자 형식의 데이터를 뒤집어야할때 사용하기 용이한 규칙이 있다. int tmp = 123; int res = 0; while(tmp > 0) { int t = tmp % 10; // 무조건 1의자리 res = res * 10 + t; tmp = tmp / 10; } tmp에 할당된 123을 뒤집는다고 가정할때 1. 대상을 10으로 나눈 나머지를 구하면 일의자리 숫자가 리턴되게 된다. 2. 최종값이 들어갈 res변수를 0으로 초기화 하고 반복문이 실행될때 마다 곱하기 10 더하기 나머지를 해준다. 3. 10을 곱하면서 자리수를 만들게 되고 그 뒤에 나머지를 더해준다. 4. tmp에 10을 나눠서 이제 필요없어진 일의자리수를 제거한다. 5. tmp가 0보다 클때 까지 반복한다. 2022. 4. 6.
[프로그래머스] 모의고사 프로그래머스 링크 https://programmers.co.kr/learn/courses/30/lessons/42840?language=java 코딩테스트 연습 - 모의고사 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 programmers.co.kr 제출 코드 import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; class Solution { public int[] solution(int[] answers) { int[] a = {.. 2022. 3. 4.
[프로그래머스] 주식가격 스택을 활용한 다른분들의 풀이를 보았으나 스택사용에 대한 학습이 우선인듯 싶어 이중for을 활용하여 풀었습니다. 시간복잡도 n제곱이기 때문에 데이터양이 많다면 효율성에서 걸릴걸로 생각됩니다. public int[] solution(int[] prices) { List list2 = new ArrayList(); for (int i = 0; i prices[j]) { break; } } list2.add(count); } int[] answer = new int[prices.len.. 2022. 2. 1.
[프로그래머스] 프린트 큐 자료구조를 사용한 풀이 큐 사용시에 인덱스로 접근이 불가능하기 때문에 queue.isEmpty를 활용한 연산 잘 고민해봐야겠다. 문제 - 프로그래머스 > 코딩테스트 연습 > 스택/큐 > 프린터 - https://programmers.co.kr/learn/courses/30/lessons/42587 풀이 1. 중요도와 위치를 기록하기 위한 클래스(Mock)생성 2. 큐에 입력 후 반복문 실행 3. 이중 반복문을 통하여 맨 앞의 중요도 보다 큰 중요도 존재 시 마지막으로 이동 제일 큰 수라면 카운트 증가 4. 제일큰수 이면서 location변수의 할당된 값과 동일하다면 리턴 제일 햇갈렸던건 무한반복이 걸리지 않을까 고민했지만 어쨋든 정렬과정에서 location이 발생할테니까 상관없다. 코드 class M.. 2022. 1. 23.