๐™‚๐™ง๐™š๐™š๐™™๐™ฎ

uuuouuoยท2022๋…„ 7์›” 26์ผ
0
post-thumbnail

๐Ÿ“– ํƒ์š• ์•Œ๊ณ ๋ฆฌ์ฆ˜


  • ํƒ์š• ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ตœ์ ํ•ด๋ฅผ ๊ตฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ทผ์‹œ์•ˆ์  ๋ฐฉ๋ฒ•
  • ์—ฌ๋Ÿฌ ๊ฒฝ์šฐ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•  ๋•Œ๋งˆ๋‹ค ๊ทธ ์ˆœ๊ฐ„์— ์ตœ์ ์ด๋ผ ์ƒ๊ฐ๋˜๋Š” ๊ฒƒ์„ ์„ ํƒํ•ด ๋‚˜๊ฐ€๋Š” ๋ฐฉ์‹
    • ์ตœ์ข…์ ์œผ๋กœ ๋‹ต์— ๋„๋‹ฌ
  • ๊ฐ ์„ ํƒ ์‹œ์ ์—์„œ ์ด๋ฃจ์–ด์ง€๋Š” ๊ฒฐ์ •์€ ์ง€์—ญ์ ์œผ๋กœ๋Š” ์ตœ์ ์ด์ง€๋งŒ, ๊ทธ ์„ ํƒ๋“ค์„ ๊ณ„์† ์ˆ˜์ง‘ํ•˜์—ฌ ๊ตฌํ•œ ์ตœ์ข…์ ์ธ ํ•ด๋‹ต์ด ์ตœ์ ์ด๋ผ๋Š” ๋ณด์žฅ ์—†์Œ

๐Ÿ’ฌ ๋Œ€ํ‘œ์ ์ธ ๋ฌธ์ œ


โ—พ ํšŒ์˜์‹ค ๋ฐฐ์ •ํ•˜๊ธฐ

์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํšŒ์˜์‹ค์€ ํ•˜๋‚˜๋งŒ ์กด์žฌํ•˜๊ณ  ๋‹ค์ˆ˜์˜ ํšŒ์˜๊ฐ€ ์‹ ์ฒญ๋œ ์ƒํƒœ์ด๋‹ค. ํšŒ์˜๋Š” ์‹œ์ž‘ ์‹œ๊ฐ„๊ณผ ์ข…๋ฃŒ ์‹œ๊ฐ„์ด ์žˆ์œผ๋ฉฐ, ์‹œ๊ฐ„์ด ๊ฒน์น˜๋Š” ํšŒ์˜๋Š” ๋™์‹œ์— ์—ด๋ฆด ์ˆ˜ ์—†๋‹ค. ์ตœ๋Œ€ ๋ช‡ ๊ฐœ์˜ ํšŒ์˜๋ฅผ ๋ฐฐ์ •ํ•  ์ˆ˜ ์žˆ์„๊นŒ?

  • ํšŒ์˜ ๊ฐœ์ˆ˜ : 10
  • ์‹œ์ž‘, ์ข…๋ฃŒ ์‹œ๊ฐ„
    1 4 1 6 6 10 5 7 3 8 5 9 3 5 8 11 2 13 12 14

ํƒ์š• ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ ์šฉ

  • ํšŒ์˜ ๋ชฉ๋ก์—์„œ ๊ฐ€์žฅ ์ผ์ฐ ๋๋‚˜๋Š” ํšŒ์˜ a ์„ ํƒ
  • a์™€ ๊ฒน์น˜๋Š” ๋ชจ๋“  ํšŒ์˜๋ฅผ ํšŒ์˜ ๋ชฉ๋ก์—์„œ ์‚ญ์ œ
  • ํšŒ์˜ ๋ชฉ๋ก์— ํšŒ์˜๊ฐ€ ๋‹ค ์—†์–ด์งˆ ๋•Œ๊นŒ์ง€ 1๋ฒˆ ๋ถ€ํ„ฐ ๋ฐ˜๋ณต

์ •๋‹น์„ฑ ์ฆ๋ช…

  • ํƒ์š•์  ์„ ํƒ์ด ํ•ญ์ƒ ์ตœ์ ํ•ด๋กœ ๊ฐ€๋Š” ๊ธธ ์ค‘ ํ•˜๋‚˜
  • ์ฆ‰, ๊ฐ€์žฅ ์ข…๋ฃŒ ์‹œ๊ฐ„์ด ๋น ๋ฅธ ํšŒ์˜๋ฅผ ํฌํ•จํ•˜๋Š” ์ตœ์ ํ•ด๊ฐ€ ๋ฐ˜๋“œ์‹œ ์กด์žฌ

๐Ÿ’ป ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ตฌํ˜„

static class Time {
	int start, end;
	public Time(int start, int end) {
		this.start = start;
		this.end = end;
	}
}
static int lastEnd, cnt;
public static void main(String[] args) {
	Time[] mittings = {
			new Time(1, 4),
			new Time(1, 6),
			new Time(6, 10),
			new Time(5, 7),
			new Time(3, 8),
			new Time(5, 9),
			new Time(7, 9),
			};
	
	Arrays.sort(mittings, (m1, m2) -> m1.end - m2.end);

	lastEnd = 0; // ๋งˆ์ง€๋ง‰์œผ๋กœ ๋๋‚œ ํšŒ์˜ ์ข…๋ฃŒ์‹œ๊ฐ„
	cnt = 0;
	Arrays.stream(mittings).forEach(m -> {
    	// ๋งˆ์ง€๋ง‰ ํšŒ์˜ ์ข…๋ฃŒ์‹œ๊ฐ„๋ณด๋‹ค ์‹œ์ž‘์‹œ๊ฐ„์ด ๊ฐ™๊ฑฐ๋‚˜ ์ปค์•ผํ•จ
		if(m.start >= lastEnd) { 
			System.out.print(m.start+"-"+m.end+" ");
			lastEnd = m.end;
			cnt++;
		}
	});
	System.out.println();
	System.out.println(cnt);
}

โ—พ Baby-gin ๋ฌธ์ œ

0~9์˜ ์ˆซ์ž ์นด๋“œ๊ฐ€ ์žˆ๋‹ค. run, triple ์กฐ์‚ฌํ•ด์„œ baby-gin์ด ๊ฐ€๋Šฅํ•œ์ง€ ํ™•์ธํ•ด๋ณด์ž.

  • run : 3๊ฐœ ์—ฐ์†์œผ๋กœ ์ฆ๊ฐ€ํ•˜๋Š” ์ˆซ์ž ์นด๋“œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ
  • triple : ๋™์ผํ•œ ์ˆซ์ž ์นด๋“œ 3๊ฐœ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ
  • baby-gin : run+triple ์ด ์žˆ๋Š” ๊ฒฝ์šฐ

ํƒ์š• ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ ์šฉ

  • ์ˆซ์ž ์นด๋“œ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋‹ด๊ธด count ๋ฐฐ์—ด ์ƒ์„ฑ
  • triple ๋จผ์ € ํŒ๋‹จํ•œ ํ›„ run ํŒ๋‹จ

๐Ÿ’ป ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ตฌํ˜„

public static void main(String[] args) {
	int[] card = {3, 3, 3, 2, 3, 4};
	
	int[] cnt = new int[10];
	Arrays.stream(card).forEach(c -> cnt[c]++);
//		Arrays.stream(cnt).forEach(c -> System.out.print(c));
	
	int tripple = 0, run = 0;
	for (int i = 0; i < 10; i++) { // cnt ํ•˜๋‚˜์”ฉ ๋Œ๋ฉด์„œ ํ™•์ธ
		// tripple์ผ ๊ฒฝ์šฐ
		if(cnt[i] >= 3) {
			cnt[i]-= 3;
			tripple++;
		}
		// run์ผ ๊ฒฝ์šฐ
		else if(cnt[i] > 0 && cnt[i+1] > 0 && cnt[i+2] > 0) {
			cnt[i]--;
			cnt[i+1]--;
			cnt[i+2]--;
			run++;
		}
	}
	
	if((tripple+run) / 2 > 0) 
		System.out.println("๊ฐ€๋Šฅ");
	else System.out.println("๋ถˆ๊ฐ€๋Šฅ");
}

0๊ฐœ์˜ ๋Œ“๊ธ€