Lv. 1 부족한 금액 계산하기 - 성공( 난이도 : 매우 쉬움)
class Solution {
public long solution(int price, int money, int count) {
long answer = 0;
long total = 0;
for(int i = 1; i <= count ; i++){
total = total + price * i;
}
//가진돈이 충분하다면
if(money > total){
return 0;
}else {
//부족하다면
return total - money;
}
}
}
Lv. 1 가운데 글자 가져오기 - 성공 (난이도 : 매우 쉬움)
복습할 내용 : subString?
class Solution {
public String solution(String s) {
String answer = "";
char[] arr = s.toCharArray();
//전체 길이가 홀수라면
if((arr.length)%2 == 1){
answer = ""+ arr[(arr.length)/2];
}else{
//짝수라면
answer = ""+arr[(arr.length)/2 -1] + ""+arr[(arr.length)/2];
}
return answer;
}
}
Lv. 1 같은 숫자는 싫어 - 성공 (실수 : 중복되는 숫자 모두 삭제하는 것으로 착각.)
한도초과 나온 풀이
import java.util.*;
public class Solution {
public int[] solution(int []arr) {
int[] answer = {};
ArrayList<Integer> answerList = new ArrayList<Integer>();
int L = 0;
int R = 0;
while(L < arr.length){
while(arr[L] == arr[R] && R < arr.length - 1){
R++;
}
L = R;
answerList.add(arr[R-1]);
}
for(int i = 0 ; i < answerList.size(); i++){
answer[i] = answerList.get(i);
}
return answer;
}
}
고친 풀이
import java.util.*;
public class Solution {
public int[] solution(int []arr) {
int[] answer = {};
ArrayList<Integer> answerList = new ArrayList<Integer>();
int previous = 11;
for(int i = 0; i < arr.length; i++){
if(arr[i] != previous){
//이전 숫자와 다르면 추가.
previous = arr[i];
answerList.add(arr[i]);
}
}
answer = new int[answerList.size()];
for(int i = 0; i < answerList.size(); i++){
answer[i] = answerList.get(i);
}
return answer;
}
}
Lv. 1 나누어 떨어지는 숫자 배열 - 성공 (난이도 : 매우쉬움)
import java.util.*;
import java.io.*;
class Solution {
public int[] solution(int[] arr, int divisor) {
int[] answer = {}; //크기 초기화 필요함.
ArrayList <Integer> answerList = new ArrayList<Integer>();
for(int i = 0; i < arr.length ; i++){
if(arr[i] % divisor == 0){
answerList.add(arr[i]);
}
}
if(answerList.size() == 0){
answerList.add(-1);
}
answer = new int[answerList.size()];
for(int i = 0 ; i < answerList.size(); i++){
answer[i] = answerList.get(i);
}
Arrays.sort(answer);
return answer;
}
}
Lv. 1 두 정수 사이의 합 - 성공 (난이도 : 매우 쉬움)
class Solution {
public long solution(int a, int b) {
int c = 0;
int d = 0;
if( a >= b){
c = b;
d = a;
}else{
c = a;
d = b;
}
long answer = 0;
for(int i = c; i <= d ; i++){
answer = answer + i;
}
return answer;
}
}
Lv. 1 문자열 내 마음대로 정렬하기 - 실패
복습할 내용 : 사전순으로 나열하기
https://programmers.co.kr/learn/courses/30/lessons/12915
코딩테스트 연습 - 문자열 내 마음대로 정렬하기
문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱
programmers.co.kr
참고한 코드:
[프로그래머스]문자열 내 마음대로 정렬하기 (Java)
문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 "sun", "bed", "car"이고 n이 1이면 각 단어의 인덱
velog.io
Lv. 1 문자열 내 p와 y의 개수 - 성공( 난이도 : 매우쉬움)
class Solution {
boolean solution(String s) {
boolean answer = true;
char[] arr = s.toCharArray();
int pumber = 0;
int yumber = 0;
for(char a : arr){
if(a == 'p' || a == 'P'){
pumber++;
}else if(a == 'y' || a == 'Y'){
yumber++;
}
}
if(pumber == yumber){
return true;
}else{
return false;
}
}
}
Lv. 1 문자열 내림차순으로 배치하기 - 성공
import java.util.*;
import java.io.*;
class Solution {
static StringBuilder sb = new StringBuilder();
public String solution(String s) {
String answer = "";
char[] arr = s.toCharArray();
Arrays.sort(arr);
for(int i = arr.length -1; i >=0 ; i--){
sb.append(arr[i]);
}
answer = sb.toString();
return answer;
}
}
Lv. 1 문자열 다루기 기본 - 실패
복습 내용: char취급을 안 해준 게 문제
s.charAt(i) < '0' || s.charAt(i) > '9'
[프로그래머스] - 문자열 다루기 기본 JAVA
프로그래머스 문자열 다루기 기본 JAVA
velog.io
Lv. 1 서울에서 김서방 찾기 - 성공 (실수 주의)
복습내용 : String은 객체이기 때문에 비교할 때 ==연산자는 false만 나옴. -> equals()사용.
import java.io.*;
import java.util.*;
class Solution {
public String solution(String[] seoul) {
String answer = "";
boolean isKim = false;
int dex = 0;
int answerIndex = 0;
for(String person : seoul){
if(person.equals("Kim")){
answerIndex = dex;
isKim = true;
break;
}
dex++;
}
if(isKim){
answer = "김서방은 " + answerIndex + "에 있다";
}
return answer;
}
}
Lv. 1 소수 찾기 - 실패( 소수관련 문제 취약)
소수 찾는 것 실수 주의 (함수 조건을 반대로 설정하는 실수 )
실패한 풀이(효율성 탈락)
https://programmers.co.kr/learn/courses/30/lessons/12921
코딩테스트 연습 - 소수 찾기
1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요. 소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다. (1은 소수가 아닙니다.) 제한 조건 n은 2이상
programmers.co.kr
class Solution {
public int solution(int n) {
int answer = 0;
for(int i = 2; i <= n ; i++){
if(!isNotSosu(i)){
answer++;
}
}
return answer;
}
public boolean isNotSosu(int n){
if( n == 2) return false;
if( n == 3) return false;
for(int i = 2; i < n ; i++){
if(n % i == 0){
return true;
}
}
return false;
}
}
참고 코드
class Solution {
public int solution(int n) {
int answer = 0;
boolean[] sosu =new boolean [n+1];
for(int i=2; i<=n ; i++)
sosu[i]=true; //2~n번째수를 true로 초기화
//제곱근 구하기
int root=(int)Math.sqrt(n);
for(int i=2; i<=root; i++){ //2~루트n까지 검사
if(sosu[i]==true){ //i번째의 수가 소수일 때
for(int j=i; i*j<=n; j++) //그 배수들을 다 false로 초기화(배수는 소수가 아니기 때문)
sosu[i*j]=false;
}
}
for(int i =2; i<=n; i++) {
if(sosu[i]==true) //소수의 개수 세기
answer++;
}
return answer;
}
}
출처: https://wooaoe.tistory.com/50 [개발개발 울었다:티스토리]
[프로그래머스] JAVA 소수 찾기 Level 1
💡 나의 풀이(효율성에서 시간복잡도 큼) class Solution { public int solution(int n) { int answer = 0; for(int i = 2; i <= n; i++){ boolean chk = true; for(int j = 2; j*j <= i; j++){ //배수 지우기 if..
wooaoe.tistory.com
'알고리즘' 카테고리의 다른 글
[Algorithm] 5월 31일 알고리즘 연습 (0) | 2022.06.01 |
---|---|
[Algorithm] 5월30일 알고리즘 연습 (0) | 2022.05.30 |
[Algorithm] 5월 26일 알고리즘 연습 (0) | 2022.05.26 |
[Algorithm] 5월 25일 알고리즘 연습 (0) | 2022.05.25 |
[Algorithm] 5월 23일 알고리즘 연습 (0) | 2022.05.23 |
댓글