ENDIANS 문제 풀이시 오답 질문 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; } } 12년 전
2개의 댓글이 있습니다. Being 문제를 잘못 이해하신 것 같습니다. 찬찬히 다시 읽어 보세요. 12년 전 link bongster 문제가 Blelist -> Lillist, Lillist --> Blelist 로 바꾸는것 아닌가요?? 기준은 8자리씩 잘라서 숫자 비교하는거 같았는데 아닌가요? 12년 전 link 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
bongster
테스트 데이터를 가지고 돌렸을 경우 테스트가 정상적으로 완료가 되는데 실제로는 오답이 되네요..
12년 전