Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
82 changes: 82 additions & 0 deletions 오찬혁/week16/숫자 야구.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
package com.codingtest;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class 숫자야구 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;

int N = Integer.parseInt(br.readLine());

int[] nums = new int[N];
int[] strikes = new int[N];
int[] balls = new int[N];

for (int i = 0; i < N; i++) {
st = new StringTokenizer(br.readLine());

nums[i] = Integer.parseInt(st.nextToken());
strikes[i] = Integer.parseInt(st.nextToken());
balls[i] = Integer.parseInt(st.nextToken());
}

int cnt = 0;

for (int p = 123; p <= 987; p++) {
int a = p / 100;
int b = p / 10 % 10;
int c = p % 10;

if (a == 0 || b == 0 || c == 0) {
continue;
}
if (a == b || b == c || c == a) {
continue;
}

boolean valid = true;
for (int i = 0; i < N; i++) {
int qa = nums[i] / 100;
int qb = nums[i] / 10 % 10;
int qc = nums[i] % 10;

int strike = 0, ball = 0;
if (a == qa) {
strike++;
}
if (b == qb) {
strike++;
}
if (c == qc) {
strike++;
}

if (a == qb || a == qc) {
ball++;
}
if (b == qa || b == qc) {
ball++;
}
if (c == qa || c == qb) {
ball++;
}

if (strike != strikes[i] || ball != balls[i]) {
valid = false;
break;
}

}

if (valid) {
cnt++;
}
}

System.out.println(cnt);
}
}
63 changes: 63 additions & 0 deletions 오찬혁/week16/양궁대회.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
class Solution {

static int maxDiff;
static int[] answer;

public int[] solution(int n, int[] info) {
maxDiff = 0;
answer = null;
dfs(0, n, info, new int[11]);

return answer == null ? new int[]{-1} : answer;
}

static void dfs(int idx, int remain, int[] info, int[] lion){
if(idx == 11){
lion[10] += remain;

int diff = calcDiff(info, lion);
if(diff > maxDiff){
maxDiff = diff;
answer = lion.clone();
} else if(diff == maxDiff && diff > 0){
if(isBetter(lion, answer)){
answer = lion.clone();
}
}

lion[10] -= remain;

return;
}

if(remain > info[idx]){
lion[idx] = info[idx] + 1;
dfs(idx + 1, remain - lion[idx], info, lion);
lion[idx] = 0;
}

dfs(idx + 1, remain, info, lion);
}

static int calcDiff(int[] info, int[] lion){
int lionSco = 0, apSco = 0;
for(int i = 0; i <= 10; i++){
int sco = 10 - i;
if(lion[i] > info[i]){
lionSco += sco;
} else if(info[i] > 0){
apSco += sco;
}
}
return lionSco - apSco;
}

static boolean isBetter(int[] lion, int[] answer){
for(int i = 10; i >= 0; i--){
if(lion[i] != answer[i]){
return lion[i] > answer[i];
}
}
return false;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
select user_id, sum(length(contents)) as total
from blog_posts
group by user_id
order by total desc, user_id desc;