[SWEA] 7272. 眼鏡がない!(Java)

14156 ワード

[問題のショートカット]https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=3&contestProbId=AWl0ZQ8qn7UDFAXz&categoryId=AWl0ZQ8qn7UDFAXz&categoryType=CODE&problemTitle=7272&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=3&pageSize=10&pageIndex=1
質問する
ある日、景根は2文字の大文字の文字列を比較せざるを得なかったが、この日はたまたま眼鏡がなかった.
景根は視力が悪く、眼鏡を外すと文字列を文字単位に区別できるが、両文字が全く同じかどうかは分からない.
特にアルファベット大文字の場合、文字中の穴数が同じであれば同じ文字とし、異なるであれば異なる文字とする.
たとえば、穴が1つもないCEFHIGJKLMNSTUVXYZを同じ文字と見なします.
穴のあるADOP 2 Dを同じ文字と見なします.
唯一2つの穴がある文字Bは唯一正確に知ることができる.
アルファベットの大文字からなる2つの文字列を指定すると、景根は2つの文字列が同じかどうかを判別します.
入力
第1行は、試験例の数Tを与える.
各テスト・インスタンスの最初の行では、2つの文字列が1つのスペースに区別されます.
各文字列はアルファベットの大文字で構成され、長さは10以下です.
しゅつりょく
各テストケースは「#x」を出力します(xはテストケース番号を表し、1から).
指定された2つの文字列が景根で同一と見なされた場合、「SAME」が出力され、逆に「DIFF」が出力されます.
に答える
  • に入力された文字列をint型配列に変換し、各大文字穴の数に値します.
  • CEFHIJKLMNSTUVXYZ=穴0
  • ADOPQR=穴1
  • B=穴2
  • の2つの文字列は同じですか?
  • 長さが異なるDIFFは、長さが同じ場合にのみ
  • を比較する.
  • 右、左文字列それぞれ
  • をチェック
    コード#コード#
    import java.util.Scanner;
    
    public class N7272 {
        static String Answer;    // DIFF or SAME
        public static void main(String[] args) {
            // TODO SWEA 안경이 없어!      
            Scanner sc = new Scanner(System.in);
            int T = sc.nextInt();
            
            for(int test_case = 1; test_case <= T; test_case++) 
            {
                String str1 = sc.next();    //길이 10이하 문자열
                String str2 = sc.next();
                
                int left = 0;
                int right = 0;
                Answer = "SAME";
                
                for(int i = 0; i < str1.length(); i++) 
                {
                    if(str1.length() != str2.length()) {
                        Answer = "DIFF";
                        break;
                    }
                    
                    // 왼쪽 문자열 숫자 변환
                    if(str1.charAt(i) == 'B') {
                        left = 2;
                    }else if(str1.charAt(i) == 'A' || str1.charAt(i) == 'D' || str1.charAt(i) == 'P' || str1.charAt(i) == 'Q' 
                            			|| str1.charAt(i) == 'O' || str1.charAt(i) == 'R') {
                        left = 1;
                    }else {
                        left = 0;
                    }
                    
                    // 오른쪽 문자열 숫자 변환
                    if(str2.charAt(i) == 'B') {
                        right = 2;
                    }else if(str2.charAt(i) == 'A' || str2.charAt(i) == 'D' || str2.charAt(i) == 'P' || str2.charAt(i) == 'Q' 
                            			|| str2.charAt(i) == 'O' || str2.charAt(i) == 'R') {
                        right = 1;
                    }else {
                        right = 0;
                    }
                    
                    if(left != right) {
                        Answer = "DIFF";
                        break;
                    }
                }
                
                System.out.println("#" + test_case + " " + Answer);
            }
            
        }
    
    }