큰 수 출력하기
내 코드 (정답) - 하
이렇게 푸는지 모르겠어서 정답을 어서 봐야겠다.
비효율적인 것 같다.
Time: 164ms Memory: 27MB
import java.util.*;
public class Main {
public String solution(int n, List<Integer> list){
String answer = "";
for(int j = 0; j < list.size(); j++){
if(j == 0){
answer += list.get(0);
answer += ' ';
} else {
if(list.get(j) > list.get(j - 1)){
answer += list.get(j);
answer += ' ';
}
}
}
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner kb = new Scanner(System.in);
int n = kb.nextInt();
List<Integer> list = new ArrayList<>();
for(int i =0; i < n; i++){
int x = kb.nextInt();
list.add(x);
}
System.out.println(T.solution(n ,list));
}
}
정답 코드
for 문으로 출력을 받아오면 되는데 비효율적으로 공백을 만들어서 리턴했다.
import java.util.*;
class Main {
public ArrayList<Integer> solution(int n, int[] arr){
ArrayList<Integer> answer = new ArrayList<>();
answer.add(arr[0]);
for(int i=1; i<n; i++){
if(arr[i]>arr[i-1]) answer.add(arr[i]);
}
return answer;
}
public static void main(String[] args){
Main T = new Main();
Scanner kb = new Scanner(System.in);
int n=kb.nextInt();
int[] arr=new int[n];
for(int i=0; i<n; i++){
arr[i]=kb.nextInt();
}
for(int x : T.solution(n, arr)){
System.out.print(x+" ");
}
}
}
보이는 학생
내 코드(정답 - 시간 초과)
답은 맞았지만 시간 초과이기 때문에 오답이다.
import java.util.*;
public class Main {
public Integer solution(int n, int[] arr){
Integer answer = 0;
for(int i = 0; i < arr.length; i++){
if(i == 0) {
answer = answer + 1;
} else {
boolean is_big = false;
for(int j = 0 ; j < i ; j++){
if(arr[j] >= arr[i]){
is_big = true;
}
}
if(!is_big){
answer = answer + 1;
}
}
}
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner kb = new Scanner(System.in);
int n = kb.nextInt();
int[] arr = new int[n];
for(int i =0; i < n; i++){
arr[i] = kb.nextInt();
}
System.out.println(T.solution(n, arr));
}
}
정답 코드
이중 for문이므로, 시간복잡도는 O(n제곱) 이다.
따라서 이중 for문을 사용하지 않고,
max 를 130으로 잡고 max 보다 클 때 계산하는 방식으로 한다.
import java.util.*;
public class Main {
public int solution(int n, int[] arr){
int answer = 1, max = arr[0];
for(int i = 0; i < n ; i++){
if(arr[i] > max){
answer ++ ;
max = arr[i];
}
}
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner kb = new Scanner(System.in);
int n = kb.nextInt();
int[] arr = new int[n];
for(int i =0; i < n; i++){
arr[i] = kb.nextInt();
}
System.out.println(T.solution(n, arr));
}
}
가위 바위 보
내 코드 (정답) - 하
println -> 다음 줄
print -> 같은 줄
어디선가 풀어본 기억이 있다.
이렇게 푸는게 맞나?
Time: 170ms Memory: 27MB
import java.util.*;
public class Main {
public String solution(int n, int arr1, int arr2){
String answer = "";
// 1 - 가위 2- 바위 3 - 보
int temp = arr1 - arr2;
if(temp == 0){
answer = "D";
} else if(temp == -1 || temp == 2){
answer = "B" ;
} else if(temp == 1 || temp == -2){
answer = "A";
}
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner kb = new Scanner(System.in);
int n = kb.nextInt();
int[] arr1 = new int[n];
for(int i =0; i < n; i++){
arr1[i] = kb.nextInt();
}
int[] arr2 = new int[n];
for(int i =0; i < n; i++){
arr2[i] = kb.nextInt();
}
for(int x = 0; x < n ; x++){
System.out.println(T.solution(n, arr1[x], arr2[x]));
}}
}
정답 코드
A가 이겼을 때 , 비겼을 때 빼고는 나머지는 다 B가 이긴거니까 ..
아...
import java.util.*;
class Main {
public String solution(int n, int[] a, int[] b){
String answer="";
for(int i=0; i<n; i++){
if(a[i]==b[i]) answer+="D";
else if(a[i]==1 && b[i]==3) answer+="A";
else if(a[i]==2 && b[i]==1) answer+="A";
else if(a[i]==3 && b[i]==2) answer+="A";
else answer+="B";
}
return answer;
}
public static void main(String[] args){
Main T = new Main();
Scanner kb = new Scanner(System.in);
int n=kb.nextInt();
int[] a=new int[n];
int[] b=new int[n];
for(int i=0; i<n; i++){
a[i]=kb.nextInt();
}
for(int i=0; i<n; i++){
b[i]=kb.nextInt();
}
for(char x : T.solution(n, a, b).toCharArray()) System.out.println(x);
}
}
반응형
'CS 기초 > 알고리즘 · 문제풀이' 카테고리의 다른 글
[JAVA] Array(1, 2차원 배열) - 점수계산 / 등수구하기 (0) | 2022.02.27 |
---|---|
[JAVA] Array(1, 2차원 배열) - 피보나치 수열 / 소수(에라토스테네스 체) / 뒤집은 소수 (0) | 2022.02.27 |
[JAVA] 문자열(String) - 가장 짧은 문자거리 / 문자열 압축 / 암호 (0) | 2022.02.26 |
[JAVA] String(문자열) - 회문 문자열 / 유효한 팰린드롬 / 숫자만 추출 (0) | 2022.02.19 |
[JAVA] 문자열(String) - 단어 뒤집기 / 특정 문자 뒤집기 / 중복 문자 제거 (0) | 2022.02.13 |