ENDIANS 문제 풀이시 오답 질문

  • bongster
    bongster

    테스트 데이터를 가지고 돌렸을 경우 테스트가 정상적으로 완료가 되는데 실제로는 오답이 되네요..

    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;
    import java.util.Scanner;
    
    /*
     * not solve the this problem at july thirty-One
     */
    public class Main {
        public static abstract class BitNum {
            public abstract String getBitnum();
        };
        public static class Blefuscu extends BitNum implements Comparable<Blefuscu> {
            private String bitnum;
            private int bitCount;
            Blefuscu(String bitString) {
                this.bitnum = bitString;
            }
            @Override
            public String toString() {
                return "BitNum [bitnum=" + bitnum + ", bitCount=" + bitCount + "]";
            }
            @Override
            public int compareTo(Blefuscu o) {
                // TODO Auto-generated method stub
                return Integer.valueOf(o.bitnum, 2)
                        - Integer.valueOf(this.bitnum, 2);
            }
            @Override
            public String getBitnum() {
                // TODO Auto-generated method stub
                return this.bitnum;
            }
        }
        public static class Lilliput extends BitNum implements Comparable<Lilliput> {
            private String bitnum;
            private int bitCount;
            Lilliput(String bitString) {
                this.bitnum = bitString;
            }
            @Override
            public String toString() {
                return "Lilliput [bitnum=" + bitnum + ", bitCount=" + bitCount
                        + "]";
            }
            @Override
            public int compareTo(Lilliput o) {
                // TODO Auto-generated method stub
                return Integer.valueOf(this.bitnum, 2)
                        - Integer.valueOf(o.bitnum, 2);
            }
            @Override
            public String getBitnum() {
                // TODO Auto-generated method stub
                return this.bitnum;
            }
        }
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            int cases = Integer.valueOf(sc.nextLine());
    
            while (cases-- > 0) {
                long num = Long.valueOf(sc.nextLine());
    
                String bitString = Long.toBinaryString(num);
                int i = 0;
                bitString = matchlength(bitString);
    
                List<Blefuscu> Blelist = new ArrayList<Blefuscu>();
                List<Lilliput> Lillist = new ArrayList<Lilliput>();
                while (i < 4) {
                    Blelist.add(new Blefuscu(bitString
                            .substring(i * 8, (i + 1) * 8)));
                    Lillist.add(new Lilliput(bitString
                            .substring(i * 8, (i + 1) * 8)));
                    i++;
                }
                Collections.sort(Blelist);
                Collections.sort(Lillist);
    
                long br = getNum(Blelist);
                long lr = getNum(Lillist);
                if (br == num) {
                    System.out.println(lr);
                } else {
                    System.out.println(br);
                }
            }
        }
        public static <T extends BitNum> long getNum(List<T> list) {
            StringBuffer sb = new StringBuffer();
            for (T bn : list) {
                sb.append(bn.getBitnum());
            }
            return Long.valueOf(sb.toString(), 2);
        }
        public static String matchlength(String bitNumString) {
            while (bitNumString.length() != 32) {
                bitNumString = "0" + bitNumString;
            }
            return bitNumString;
        }
    }
    

    10년 전
2개의 댓글이 있습니다.
  • Being
    Being

    문제를 잘못 이해하신 것 같습니다. 찬찬히 다시 읽어 보세요.


    10년 전 link
  • bongster
    bongster

    문제가 Blelist -> Lillist, Lillist --> Blelist 로 바꾸는것 아닌가요?? 기준은 8자리씩 잘라서 숫자 비교하는거 같았는데 아닌가요?


    10년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.