コード基礎100題
実装がうまくいかなかったため,100問のコード更新の基礎を解くことにした.
よく使われない混同された概念についてコメントする.
1069:[基本条件/実行構造の選択]異なる評価を入力して出力します(説明)
この問題はif文で実現できるが,if文の条件式結果は真と偽の2種類しかなく,状況が多ければコードが長くなり,処理時間も長くなるという欠点がある.参照に示すように、個人がif文をよく使用するため、switch文の制約条件が混同されるため、switch-case文で実装され、解きます.
switch文は1つの条件式で、多くの場合の数を処理することができ、コードが簡潔であるという利点があります.ただし、switch文の条件式の結果は整数、文字、文字列でなければならないという制約があります.また、条件式の結果一致する値はcase文に移動し、case文の値は整数定数のみであるため、変数や実数を書き込むことができず、繰り返すことができません.(JDK 1.7以降で文字列を使用可能)
ソースコード
これは16進数で入力し、16進数で出力する問題です.値を他のフォーマットに出力する場合は、フォーマット出力printf()メソッドを使用します.
ScannerのnextInt()メソッドのパラメータ受信基数を使用して、パラメータ受信の進数に変換できます.(問題を解くときに初めて知った)printf()に%xというインジケータを指定し、16進数整数で出力すればよい.
println()とprintf()に性能差があるかどうか知りたいので探してみましたが、関連記事はなく、性能に差はないようです.出力値はprintln()、出力はprintf()を使用します.
ソースコード
クロスをひっくり返すのはいったい何ですか.たった30分で問題を理解した.ははは、他のブログ記事を見ても説明がなかったのでYouTubeを見てすぐに納得.
この問題は,座標で指定された横番と縦番の駒を白->剣/剣->白に置き換える問題である.
2 D配列長さ19*19、座標-1を宣言し、横線と縦線の駒の色を変更します.このとき,横線の駒は白から黒(1−>0)に変わり,横線の駒は再び変化する.(0 -> 1)
ソースコード
よく使われない混同された概念についてコメントする.
1069:[基本条件/実行構造の選択]異なる評価を入力して出力します(説明)
この問題はif文で実現できるが,if文の条件式結果は真と偽の2種類しかなく,状況が多ければコードが長くなり,処理時間も長くなるという欠点がある.参照に示すように、個人がif文をよく使用するため、switch文の制約条件が混同されるため、switch-case文で実装され、解きます.
switch文は1つの条件式で、多くの場合の数を処理することができ、コードが簡潔であるという利点があります.ただし、switch文の条件式の結果は整数、文字、文字列でなければならないという制約があります.また、条件式の結果一致する値はcase文に移動し、case文の値は整数定数のみであるため、変数や実数を書き込むことができず、繰り返すことができません.(JDK 1.7以降で文字列を使用可能)
ソースコード
import java.util.Scanner;
// 평가 입력받아 다르게 출력
public class c1069 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
char c = sc.next().charAt(0);
switch (c) { // 조건식의 결과는 정수, 문자, 문자열만 가능
case 'A': // 정수 상수, 문자열 가능
System.out.println("best!!!");
break;
case 'B':
System.out.println("good!!");
break;
case 'C':
System.out.println("run!");
break;
case 'D':
System.out.println("slowly");
break;
default: // case를 제외한 나머지 모든 경우에 실행
System.out.println("what?");
}
}
}
1082:[基礎-総合]十六進法gugudan?これは16進数で入力し、16進数で出力する問題です.値を他のフォーマットに出力する場合は、フォーマット出力printf()メソッドを使用します.
ScannerのnextInt()メソッドのパラメータ受信基数を使用して、パラメータ受信の進数に変換できます.(問題を解くときに初めて知った)printf()に%xというインジケータを指定し、16進数整数で出力すればよい.
println()とprintf()に性能差があるかどうか知りたいので探してみましたが、関連記事はなく、性能に差はないようです.出力値はprintln()、出力はprintf()を使用します.
ソースコード
import java.util.Scanner;
// 16진수 구구단?
public class c1082 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt(16); // 16진수로 입력받음
for (int i = 1; i < 16; i++) {
System.out.printf("%X*%X=%X%n", n, i, n * i); // %x : 16진 정수의 형식으로 출력
}
}
}
1097:[基本-2 D配列]反転駒十字(説明)クロスをひっくり返すのはいったい何ですか.たった30分で問題を理解した.ははは、他のブログ記事を見ても説明がなかったのでYouTubeを見てすぐに納得.
この問題は,座標で指定された横番と縦番の駒を白->剣/剣->白に置き換える問題である.
2 D配列長さ19*19、座標-1を宣言し、横線と縦線の駒の色を変更します.このとき,横線の駒は白から黒(1−>0)に変わり,横線の駒は再び変化する.(0 -> 1)
ソースコード
import java.util.Scanner;
// 바둑알 십자 뒤집기
public class c1097 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[][] board = new int[19][19];
for (int i = 0; i < board.length; i++) {
for (int j = 0; j < board.length; j++) {
board[i][j] = sc.nextInt(); // 바둑판
}
}
int n = sc.nextInt(); // 뒤집기 횟수
for (int i = 0; i < n; i++) {
// 뒤집기 좌표
int x = sc.nextInt() - 1;
int y = sc.nextInt() - 1;
for (int j = 0; j < board.length; j++) {
if (board[x][j] == 0) { // 가로
board[x][j] = 1;
} else {
board[x][j] = 0;
}
}
for (int j = 0; j < board.length; j++) {
if (board[j][y] == 0) { // 세로
board[j][y] = 1;
} else {
board[j][y] = 0;
}
}
}
for (int[] bb : board) {
for (int b : bb) {
System.out.printf("%d ", b);
}
System.out.println();
}
}
}
Reference
この問題について(コード基礎100題), 我々は、より多くの情報をここで見つけました https://velog.io/@im_lily/코드업-기초100제テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol