D2 정답률 높은 문제부터 풀어보았다.
swea에서 자바로 제출할 땐 Solution 클래스로 제출해야 한다.
1945 간단한 소인수분해
import java.util.Scanner;
public class Solution{
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
int [] arr = new int[n];
for (int i=0; i<n; i++)
{
int [][] N = {{2,0}, {3,0}, {5,0}, {7,0}, {11,0}};
arr[i] = scan.nextInt();
for(int j=0; j<5; j++)
{
while(true)
{
if(arr[i] % N[j][0] ==0)
{
N[j][1] += 1;
arr[i] /= N[j][0];
}
else
break;
}
}
System.out.printf("#%d %d %d %d %d %d\n",i+1,N[0][1], N[1][1],N[2][1], N[3][1], N[4][1]);
}
}
}
1986 지그재그 숫자
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
int [] arr = new int[n];
for(int i=0; i<n; i++)
{
int result =1;
arr[i] = scan.nextInt();
for(int j=2; j<=arr[i];j++)
{
if(j%2 == 0)
result = result - j;
else
result = result + j;
}
arr[i] = result;
}
for(int i=0; i<n; i++)
System.out.printf("#%d %d\n", i+1,arr[i]);
}
}
1288. 새로운 불면증 치료법
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
int [] arr = new int[n];
for(int i=0; i<n; i++)
{
int p = 1;
arr[i] = scan.nextInt();
int [] num = new int[10];
while(!allNonZero(num))
{
String s = Integer.toString(arr[i] * p);
for(int k=0; k<s.length(); k++)
{
int number = Integer.parseInt(s.substring(k,k+1));
num[number] ++;
}
p ++;
}
arr[i] = arr[i]*(p-1);
}
for(int i=0; i<n; i++)
System.out.printf("#%d %d\n",i+1,arr[i]);
}
private static boolean allNonZero(int[] arr) {
for(int num : arr) {
if(num == 0) {
return false;
}
}
return true;
}
}
1284. 수도 요금 경쟁
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
int [] arr = new int[n];
int A,B=0;
for (int i=0; i<n; i++)
{
int P = scan.nextInt();
int Q = scan.nextInt();
int R = scan.nextInt();
int S = scan.nextInt();
int W = scan.nextInt();
A = W*P;
if(W>R)
B = Q + (W-R)*S;
else
B = Q;
arr[i] = A<B ? A : B;
}
for(int i=0; i<n; i++)
System.out.printf("#%d %d\n",i+1, arr[i]);
}
}
1989. 초심자의 회문 검사
nextInt()와 nextLint() 을 같이 쓰면 개행 문자 처리가 발생할 수 있으므로 다음과 같이 개행 문자를 제거해야한다.
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
scan.nextLine(); // 개행 문자 제거
String[] arr = new String[n];
for (int i = 0; i < n; i++) {
arr[i] = scan.nextLine();
int length = arr[i].length();
boolean isSame = true;
for (int j = 0; j < (length + 1) / 2; j++) {
if (!arr[i].substring(j, j + 1).equals(arr[i].substring(length - 1 - j, length - j))) {
isSame = false;
break;
}
}
if (isSame) {
arr[i] = "1";
} else {
arr[i] = "0";
}
}
for(int i=0; i<n; i++)
System.out.printf("#%d %s\n", i + 1, arr[i]);
}
}
'알고리즘 정리 > [swea]' 카테고리의 다른 글
[swea] 공부기록 day06 (0) | 2024.05.09 |
---|---|
[swea] 공부기록 day05 (0) | 2024.05.08 |
[swea] 공부기록 day04 (0) | 2024.05.08 |
[swea] 공부기록 day03 (0) | 2024.05.06 |
[swea] 공부기록 day02 (0) | 2024.05.05 |