1100, 1110, 1159 - 하얀 칸, 더하기 사이클, 농구 경기

2022. 1. 27. 00:24· PS - BOJ
목차
  1. 1100
  2. 1110
  3. 1159

1100

하얀 칸

  • 체스판은 8×8크기이고, 검정 칸과 하얀 칸이 번갈아가면서 색칠되어 있다. 가장 왼쪽 위칸 (0,0)은 하얀색이다. 체스판의 상태가 주어졌을 때, 하얀 칸 위에 말이 몇 개 있는지 출력하는 프로그램을 작성하시오.
  • 8줄 문자열로 주어지고, '.'은 빈칸, 'F'는 말이 있는 칸이다.
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String[] arr = new String[8];
		for (int i = 0; i < 8; i++) {
			arr[i] = sc.next();
		}
		int cnt = 0;
		for (int i = 0; i < 8; i++) {
			for (int j = 0; j < 8; j++) {
				if (arr[i].charAt(j) == 'F' && (i + j) % 2 == 0) {
					cnt++;
				}
			}
		}
		System.out.println(cnt);
		sc.close();

	}
}
  • ㅇㅇ

 

1110

더하기 사이클

  • 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, 주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자리 수를 이어 붙이면 새로운 수를 만들 수 있다.
  • ex) 26시작. 2+6=8, 다음 수는 68. 6+8=14, 다음 수는 84. 8+4=12, 다음 수는 42. 4+2=6, 다음 수는 26. 4번만에 돌아왔다. 따라서 사이클 길이는 4.
  • ex) 0시작. 0+0=0, 다음 수는 0. 1번만에 돌아왔다. 사이클 길이는 1.
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		// 입력
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		sc.close();
		int res = 0; // 반복 횟수 저장할 변수
		final int origin = n; // 원래 값 저장
		do {
			res++;
			n = n % 10 * 10 + (n % 10 + n / 10) % 10; // 결과 수의 십의 자리: 원래 일의 자리. 일의자리: 더한 수의 일의자리
		} while (n != origin); // 같아질 때가지 계속
		System.out.println(res);
	}
}
  • 한글 설명이 기괴해서 그렇지... 이해하면 풀 수 있다.

 

1159

농구 경기

  • 첫 줄에 선수 수 N이 입력되고, (1<=N<=150)
  • 다음 N개 줄에는 각 선수 이름이 입력됨. (이름<=30글자)
  • 선수 이름 첫 글자가 같은 선수 5명 이상이면 출전 가능.
  • 출전 가능한 첫 글자 모두를 사전순으로 출력 / 아무도 없을 시 PREDAJA 출력.
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

public class bj1159_0126 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		char[] name = new char[N];

		for (int i = 0; i < N; i++) {
			name[i] = sc.next().charAt(0); // 입력과 동시 첫 글자만 차곡차곡 저장
		}
		sc.close();

		int[] cnt = new int[N]; // 각 인덱스에 해당 알파벳이 몇 개 있는지 저장할 배열
		boolean flag = false; // 아무도 없으면 그대로 false, PREDAJA 출력할 목적
		ArrayList<Character> cl = new ArrayList<>(); // 가변길이 배열, 답 되는 알파벳 모두 넣어줄 것
		for (int i = 0; i < N; i++) {
			cnt[i]++; // 하나니까 세주고
			if (cnt[i] == 0) // 만약 뒤에서 스킵하라고 한 놈이면 건너뛰기
				continue;
			for (int j = i + 1; j < N; j++) {
				if (name[i] == name[j]) {
					cnt[i]++; // 한칸 뒤부터 끝까지, 같은 놈 나올 때마다 +1하고,
					cnt[j] = -1; // 대신 그 같은 대상은 -1 저장해서 나중에 자기 차례 땐 건너뛰게
				}
			}
			if (cnt[i] > 4) {
				cl.add(name[i]); // 5명 이상이면 출전 가능, 가변길이 배열에 하나씩 넣어주기
				flag = true; // 한명이 이미 출전 가능이니까, PREDAJA 출력하지말자
			}
		}
		if (flag == false)
			System.out.println("PREDAJA"); // 아무도 출전 못하니까 항복
		else {
			Collections.sort(cl); // 사전순으로 자동정렬
			for (int i = 0; i < cl.size(); i++)
				System.out.print(cl.get(i));
		}
	}
}
  • 가변 길이 배열을 처음 문제에 써봤다.
  • 그냥 그거 실습 한 의의가 있는 문제
  • 근데 자꾸... 숫자 세는 문제에서 항상 같은 크기의 배열을 하나 더 만들고, 각 인덱스에 대응하는 수 개수를 인덱스에 저장하는 형식으로 문제를 풀어왔는데,
  • 이 방법이 그닥 좋은 방법 같지는 않다. 다른 방법을 알고싶다.
저작자표시 (새창열림)

'PS - BOJ' 카테고리의 다른 글

1193 - 분수찾기, 1225 - 이상한 곱셈, 1233 - 주사위  (0) 2022.01.28
1157 - 단어 공부  (0) 2022.01.27
1026, 1037, 1085 - 보물, 약수, 직사각형에서 탈출  (0) 2022.01.26
1003 - 피보나치 함수  (0) 2022.01.25
1094, 1015, 1057 - 막대기, 수열 정렬, 토너먼트  (0) 2022.01.25
  1. 1100
  2. 1110
  3. 1159
'PS - BOJ' 카테고리의 다른 글
  • 1193 - 분수찾기, 1225 - 이상한 곱셈, 1233 - 주사위
  • 1157 - 단어 공부
  • 1026, 1037, 1085 - 보물, 약수, 직사각형에서 탈출
  • 1003 - 피보나치 함수
승농
승농
나는 실시간으로 강해지고 있는 백엔드 개발자.
승농
개발자국의 승농
승농
전체
오늘
어제
  • 분류 전체보기 (57)
    • 자유 (0)
    • 코딩 (33)
      • Java (15)
      • WEB 개발 (14)
      • Kotlin (1)
      • DB (1)
    • PS - CodeUp (9)
    • PS - BOJ (15)

블로그 메뉴

  • 블로그 소개
  • 방명록

공지사항

인기 글

관리자

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.0
승농
1100, 1110, 1159 - 하얀 칸, 더하기 사이클, 농구 경기
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.