728x90
Lv. 2 멀쩡한 사각형 - 실패
참고할 풀이:
[프로그래머스] 멀쩡한 사각형 문제풀이 (Java)
프로그래머스 멀쩡한 사각형 문제풀이
velog.io
내풀이
class Solution {
public long solution(int w, int h) {
long answer = 1;
//전체 칸수
long totalBox = w*h;
long deletedBox = 0;
int tempW =0;
int tempH =0;
for(int i = Math.min(w,h); i > 1; i--){
if(w%i == 0 && h%i ==0){//둘다 약분이 되는 경우
tempW = w/i;
tempH = h/i;
break;
}
}
//깔끔하게 나누어지는 경우
// 같을 때
if(h%w == 0 && h == w){
deletedBox = h ;
}//나누어 지지만 h가 클 때
else if(h%w ==0 && h>w){
deletedBox = (h/w)*w;
}//나누어지지 않는 경우 h가 더 클때
else if(h%w !=0 && h>w){
deletedBox = ((tempH%tempW)+1) * w;
}
else if(w % h ==0 && w >= h){
deletedBox = w;
}
else if(w % h !=0 && w > h){
deletedBox = ((tempW%tempH)+1)*h;
}
answer = totalBox - deletedBox;
return answer;
}
}
내 풀이 정확도 : 38%
테스트 1 〉 | 통과 (0.05ms, 74.3MB) |
테스트 2 〉 | 실패 (런타임 에러) |
테스트 3 〉 | 실패 (0.11ms, 71MB) |
테스트 4 〉 | 실패 (0.11ms, 72.4MB) |
테스트 5 〉 | 실패 (0.14ms, 70.9MB) |
테스트 6 〉 | 실패 (0.21ms, 71.7MB) |
테스트 7 〉 | 통과 (0.05ms, 76.9MB) |
테스트 8 〉 | 통과 (0.07ms, 73.8MB) |
테스트 9 〉 | 통과 (0.08ms, 72.9MB) |
테스트 10 〉 | 통과 (0.05ms, 73.7MB) |
테스트 11 〉 | 통과 (0.10ms, 71.7MB) |
테스트 12 〉 | 실패 (0.06ms, 75.2MB) |
테스트 13 〉 | 실패 (29.27ms, 82.1MB) |
테스트 14 〉 | 실패 (0.08ms, 75.3MB) |
테스트 15 〉 | 실패 (런타임 에러) |
테스트 16 〉 | 실패 (런타임 에러) |
테스트 17 〉 | 실패 (20.98ms, 76MB) |
테스트 18 〉 | 통과 (0.07ms, 84.2MB) |
Lv. 2 124 나라의 숫자 - 실패
복습 필요한 내용 :
3진법 만들기
charAt()으로 char -> int로 받는 방법
char c = '1';
int n = c - '0';
// n = 1
참고한 풀이
class Solution {
public String solution(int n) {
String answer = "";
while(n > 0){
int rest = n % 3;
n /= 3;
if(rest == 0){
rest = 4;
n -= 1; // 나누어 떨어졌으니까
}
answer = rest + answer;
}
return answer;
}
}
https://swycha.tistory.com/114
[프로그래머스] 124 나라의 숫자(java) ⭐️
[문제] 문제 설명 124 나라가 있습니다. 124 나라에서는 10진법이 아닌 다음과 같은 자신들만의 규칙으로 수를 표현합니다. 124 나라에는 자연수만 존재합니다. 124 나라에는 모든 수를 표현할 때 1, 2
swycha.tistory.com
내풀이 - 정확성: 35.0
import java.util.*;
import java.io.*;
class Solution {
StringBuilder sb = new StringBuilder();
public String solution(int n) {
String answer = "";
ArrayList<Integer> arr = new ArrayList<Integer>();
//3진법으로 변환
while(n > 0){
//역순으로 3진법을 나열(다시 역순으로 나열할 필요있음.)
arr.add(n%3);
n = n/3;
}
for(int i = arr.size()-1 ; i >= 0 ; i--){
sb.append(arr.get(i));
}
//3진법 결과
String thirdNum = sb.toString();
sb.setLength(0); //Builder 초기화
//3진법 숫자들을 각각 배열에 담음.
int[] thirdInt = new int[thirdNum.length()];
for(int i = 0; i < thirdNum.length(); i++){
thirdInt[i] = thirdNum.charAt(i) -'0';
}
//3진법 -> 124진법 변환
//[2,0] -> 14
int delta = 0;
int prev = 0;
for(int i = thirdNum.length()-1; i >=0 ; i--){
if(thirdInt[i] == 0) {
if(delta == 1){
thirdInt[i] = 0 + delta;
prev = 0 + delta;
}else{
thirdInt[i] = 4;
prev = 4;
}
delta = 1;
}
else if(thirdInt[i] == 1){
thirdInt[i] = 1 - delta;
prev = 1 - delta;
delta = 0;
}else if(thirdInt[i] == 2){
thirdInt[i] = 2 - delta;
prev = 2 - delta;
delta = 0;
}
}
//변환된 진법 출력
//[0,1,4]
boolean isNumber = false;
for(int i = 0 ; i < thirdInt.length ; i++){
if(thirdInt[i] != 0){
isNumber= true;
}
if(isNumber){
sb.append(thirdInt[i]);
}
}
answer = sb.toString();
return answer;
}
}
728x90
'알고리즘' 카테고리의 다른 글
[Algorithm]6월5일 알고리즘 연습(프로그래머스 level2) -에이젠 (0) | 2022.06.05 |
---|---|
[Algorithm] 6월2일 알고리즘 연습(프로그래머스 Level2) - 에이젠 (0) | 2022.06.02 |
[Algorithm] 5월 31일 알고리즘 연습 (0) | 2022.06.01 |
[Algorithm] 5월30일 알고리즘 연습 (0) | 2022.05.30 |
[Algorithm] 5월29일 알고리즘 연습 (0) | 2022.05.29 |
댓글