TIL-2021.11.08
49195 ワード
1.今日やるべきこと
2.今日やったこと(+習ったこと)
https://velog.io/@kju190920/%ED%95%AD%ED%95%B499-2%EC%A3%BC%EC%B0%A8-S.A
https://velog.io/@kju190920/Java%EC%83%9D%ED%99%9C%EC%BD%94%EB%94%A9
2番:偶数と奇数
問題の説明
整数numが偶数の場合は「Even」、奇数の場合は「Odd」の関数を返します.解決策を完了してください.
せいげんじょうけん
numはint範囲の整数です.
0は偶数です.
Solution
条件文
class Solution {
public String solution(int num) {
String result = "";
// 2로 나눈 나머지 0이면 짝수, 아니면 홀수
if (num % 2 == 0){
result = "Even";
}else{
result = "Odd";
}
/* 다른 사람 풀이
return num % 2 == 0 ? "Even": "Odd";
*/
return result;
}
}
6番:ない数字を追加
問題の説明
パラメータは、0から9までの数値の一部を含む配列番号です.numbersで見つからない0から9までのすべての数字は、solution関数を完了して1つの数を返します.
せいげんじょうけん
1≦numbersの長さ≦9
0≦numbersのすべての数≦9
numbersのすべての数字が異なります.
Solution
class Solution {
public int solution(int[] numbers) {
int result = 45; // 0 ~ 9 까지의 합
// 전달 받은 길이 만큼 반복문을 돌려서 전달받은 값을 뻄
// 9 라는 숫자만 전달 받으면 총합에서 9를 뺸 없는 숫자 더함 (45 - 9 = 36)
for (int i = 0 ; i < numbers.length; i++ ){
result -= numbers[i];
}
/* 다른 사람 풀이
for (int i : numbers) {
sum -= i;
}
*/
return result;
}
}
1号:長方形で撮影
問題の説明
この問題には、標準入力として2つの整数nとmがあります.
アスタリスク(*)を使用して、長さn、長さmの長方形を出力します.
せいげんじょうけん
nとmはそれぞれ1000以下の自然数である.
Solution
import java.util.Scanner;
class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
for (int i = 0 ; i < b ; i++){ // 세로 길이 만큼
for(int j = 0; j < a; j++ ){ // 가로 길이 만큼
System.out.print('*');
}
System.out.println(); // 개행
}
}
}
3番:中間文字を入力
問題の説明
単語sの中間文字を返す関数を作成します.単語の長さが偶数の場合は、中間の2文字を返します.
せいげんじょうけん
sは、1または100より長い文字列です.
Solution
条件文
class Solution {
public String solution(String s) {
String result = "";
// 짝수면 가운데 두 글자, 홀수면 가운데 한 글자
if(s.length() % 2 == 0){
result = s.substring(s.length()/2 - 1, s.length()/2 + 1);
}else{
result = s.substring(s.length()/2, s.length()/2 + 1);
}
/* 다른 사람 풀이
return s.substring((s.length()-1) / 2, s.length()/2 + 1);
}
*/
return result;
}
}
4:2つの整数の合計
問題の説明
2つの整数a,bが与えられると,aとbの間のすべての整数の和の関数を返し,解を完了する.
例えば、a=3、b=5の場合、3+4+5=12であるため、12が返される.
せいげんじょうけん
aとbが同じ場合、どちらの場合も車に戻ることができます.
aおよびbは、−1000000または1000000以下の整数である.
aとbの大きさの関係は不確定である.
Solution
条件文
class Solution {
public long solution(int a, int b) {
long result = 0;
int temp = 0;
// 작은 수를 a 값에 오도록 서로 변경
if (a > b){
temp = a;
a = b;
b = temp;
}
for (int i = a; i <= b; i++){
result += i;
}
return result;
}
}
// 다른 사람 풀이
class Solution {
public long solution(int a, int b) {
return sumAtoB(Math.min(a, b), Math.max(b, a));
}
private long sumAtoB(long a, long b) {
return (b - a + 1) * (a + b) / 2;
}
}
5:文字列を整数に置換
問題の説明
文字列sを数値に変換した結果の関数を返します.
せいげんじょうけん
sの長さは1または5以下である.
sの一番前に記号(+,-)があるかもしれません.
sは記号と数字のみからなる.
sは「0」で始まりません.
Solution
class Solution {
public int solution(String s) {
int result = 0;
// 문자열을 숫자로 변경
result = Integer.parseInt(s);
return result;
}
}
// 다른 사람 풀이
public class StrToInt {
public int getStrToInt(String str) {
boolean Sign = true;
int result = 0;
for (int i = 0; i < str.length(); i++) {
char ch = str.charAt(i);
if (ch == '-')
Sign = false;
else if(ch !='+')
result = result * 10 + (ch - '0');
}
return Sign?1:-1 * result;
}
//아래는 테스트로 출력해 보기 위한 코드입니다.
public static void main(String args[]) {
StrToInt strToInt = new StrToInt();
System.out.println(strToInt.getStrToInt("-1234"));
}
}
7号:陰陽加算
問題の説明
いくつかの整数があります.パラメータは、整数配列の絶対値(整数単位)と記号(整数単位)です.解関数を完了し、実際の整数の和を求めて返してください.
せいげんじょうけん
絶対値の長さは1または1000以下です.
絶対数のすべての数字は1または1000以下です.
記号の長さは絶対長に等しい.
signs[i]が真で絶対[i]を表す実際の整数は正であり、そうでなければ負である.
Solution
class Solution{
public int solution(int[] absolute, boolean[] sign){
int result = 0;
for(int i = 0; i < absolute.length; i++){
if(sign[i]){
result += absolute[i]; // 양수면 그냥 더함
}else{
result -= absolute[i]; // 음수면 마이너스 붙여서 뺌
}
}
return result;
}
}
// 다른 사람 풀이
class Solution {
public int solution(int[] absolutes, boolean[] signs) {
int answer = 0;
for (int i=0; i<signs.length; i++)
answer += absolutes[i] * (signs[i]? 1: -1);
return answer;
}
}
8号:平均値を求める
問題の説明
整数を含む配列arrの平均値を返す関数を完了します.
せいげんじょうけん
arrは、長さが1以上100未満の配列である.
arrの要素は10000未満または10000未満の整数です.
Solution
class Solution {
public double solution(int[] arr) {
double avg = 0;
int sum = 0;
for(int i = 0; i< arr.length; i++){
sum += arr[i];
}
avg = ((double)sum / arr.length);
return avg;
}
}
import java.util.Arrays;
public class GetMean {
public int getMean(int[] array) {
return (int) Arrays.stream(array).average().orElse(0);
}
public static void main(String[] args) {
int x[] = {5, 4, 3};
GetMean getMean = new GetMean();
// 아래는 테스트로 출력해 보기 위한 코드입니다.
System.out.println("평균값 : " + getMean.getMean(x));
}
}
9番:携帯番号を止める
問題の説明
プログラマのモバイルデバイスは、個人情報を保護する通知を送信すると、お客様の電話番号の一部を遮断します.
電話番号に文字列phone numberが付与されている場合、電話番号の後ろ4桁を除いて、他の数字がすべて*で上書きされている文字列は、関数に戻って解決策を完了してください.
せいげんじょうけん
sは、長さが4より大きく、20未満の文字列である.
Solution
class Solution{
public String solution (String phone_number){
String result = "";
for(int i = 0; i < phone_number.length(); i++){
// 끝에서 4자리 전까지 * 찍음, 나머지 그대로
if(i < phone_number.length()-4){
result += '*';
}else {
result += phone_number.charAt(i); // 문자열 내 i번째 인덱스 문자를 가리킴
}
}
return result;
}
}
// 다른 사람 풀이
class Solution {
public String solution(String phone_number) {
char[] ch = phone_number.toCharArray();
for(int i = 0; i < ch.length - 4; i ++){
ch[i] = '*';
}
return String.valueOf(ch);
}
}
10番:行列の加算
問題の説明
行列の加算は、2つの同じ行列の同じ行、同じ列の値を加算した結果です.2つのマトリクスarr 1とarr 2を入力し、マトリクス加算結果の関数を返し、解を完了します.
せいげんじょうけん
行列arr 1、arr 2の行および列の長さは500を超えない.
Solution
/*
2차원 배열은 인덱스 2개를 사용하여 값을 저장하고 출력
중첩 반복문 사용
*/
class Solution{
public int[][] solution(int[][] arr1, int[][] arr2){
int[][] result = new int[arr1.length][arr1[0].length]; // new int[][]{{1, 2}, {3, 4}};
// 1. 반복문 이용해서 2차원 배열 값 저장
for(int i =0; i < arr1.length; i++){
for(int j = 0; j < arr1[i].length; j++){
result[i][j] = arr1[i][j] + arr2[i][j];
}
}
return result;
}
}
// 다른 사람 풀이
lass SumMatrix {
int[][] sumMatrix(int[][] A, int[][] B) {
int row = Math.max(A.length, B.length);
int col = Math.max(A[0].length, B[0].length);
//int[][] answer = {{0, 0}, {0, 0}};
int[][] answer = new int[row][col];
for(int i=0; i<row ; i++){
for(int j=0; j<col; j++){
answer[i][j] = A[i][j] + B[i][j];
}
}
return answer;
}
Reference
この問題について(TIL-2021.11.08), 我々は、より多くの情報をここで見つけました https://velog.io/@kju190920/TIL-2021.11.08テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol