목록구현 (59)
Dev.baelanche
원래 단어와 사전의 단어를 각각 가리키는 포인터를 둔다. D E V I L I V D E V I L I V I 시작시 포인터위치는 양쪽 다 0이며 D, D를 비교한다. D E V I L I V D E V I L I V I 일치시에 양 포인터가 오른쪽으로 한칸 움직인다. D, E, V, I, L, I, V가 모두 일치하므로 포인터는 7번째 문자를 가리킨다. 원래단어의 포인터가 끝위치일때는 사전단어의 포인터만 움직이며 갑분싸 가성비가 그만큼 줄어든다. 다른 예시를 보자 D E V I L I V D E N V E R 포인터가 3번째 위치일때 글자가 서로 다르다. 이럴때는 사전단어의 포인터 위치만 증가하며 맞을때까지 움직인다. 단어가 일치하지 않으므로 갑분싸 가성비는 감소한다. 원래 단어 3번째, 사전 단어 4..
n이 10이하일때 1 n이 110이하일때 2 n이 1110이하일때 3 .... 순으로 구매해야하는 스티커가 늘어난다. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); if(n >= 0 && n = i && n
매 케이스마다 주어진 문자열을 한칸씩 밀어주면서 사전의 단어를 포함하는지 확인하면 된다. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String cipher = sc.next(); int n = sc.nextInt(); String s[] = new String[n]; for(int i=0; i
중간에 단 한번이라도 울림 제미니스의 점수가 높은지를 체크해야한다. 1회초, 1회말 ...... 9회초, 9회말 순으로 점수를 비교하며 한번이라도 울림쪽이 이기고 있다면 Yes를 출력해주자. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int a[] = new int[9]; for(int i=0; i
10^2 마다 그 중간값이 사랑스러움 수치가 가장 크다는걸 눈치채야한다. 1~9 : 5 10~99 : 50 100~999 : 500 ... 순이다. 4, 49, 499도 위 숫자의 사랑스러움 값과 동일하다. n이 두자리수이고 50보다 작다면 n의 사랑스러움 수치가 최대값이다. 값이 int의 범위를 가뿐히 넘어가므로 적절한 자료형으로 풀어주자. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int t = sc.nextInt(); while(t-->0) { int k = sc.nextInt(); for(long i=10; true; i*=10) { if(k < i) { if(k <..
1부터 열려져 있는 창문 개수를 시뮬레이션 해보면 n이 제곱근일때 수가 증가한다. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int cnt = 0; for(int i=1; i*i
문제에서 주어진대로 스왑해준다. 길이가 매우 길어질 수 있는 관계로 문자열 가지고 직접 구현할수는 없다. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int k = sc.nextInt(); int a = 1; int b = 0; while(k-->0) { int tempB = a; a -= a; a += b; b += tempB; } System.out.println(a + " " + b); } }
귀찮은 문자열 문제이다. 이진수 A, B 를 입력받은 후 편의상 A가 B보다 무조건 더 길도록 했다. B의 앞부분에는 A와 길이가 맞게끔 0을 채워주고 합연산을 진행한다. 결과가 0일때만 0을 출력하고 나머지 경우에는 1로 시작해야 하므로 이부분만 따로 예외처리 해주었다. ublic class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String t1 = sc.next(); String t2 = sc.next(); if(t1.length() < t2.length()) { String temp = t1; t1 = t2; t2 = temp; } int diff = t1.length() - t2.le..