mooonπŸŒ™
STUDY
mooonπŸŒ™
전체 방문자
였늘
μ–΄μ œ
  • λΆ„λ₯˜ 전체보기 (170)
    • μ½”λ”© ν…ŒμŠ€νŠΈ (147)
      • λ°±μ€€ μ•Œκ³ λ¦¬μ¦˜ (53)
      • [ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] Lv1 (13)
      • [ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] μ½”λ”© ν…ŒμŠ€νŠΈ μž…λ¬Έ (54)
      • [ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] SQL 고득점 Kit (27)
    • BACK (4)
      • Spring (3)
      • PHP (0)
    • FRONT (5)
    • DevOps (8)
      • Jenkins (8)
    • GitHub🌱 (2)
    • λ°μ΄ν„°λ² μ΄μŠ€ (1)
      • SQL (1)
    • Error πŸ’₯ (0)
      • php (2)
    • πŸ˜‹ (1)

λΈ”λ‘œκ·Έ 메뉴

  • ⭐ κΉƒν—ˆλΈŒ
  • πŸ’• λ°©λͺ…둝
  • πŸ’₯ νƒœκ·Έ

인기 κΈ€

νƒœκ·Έ

  • μ½”λ”©ν…ŒμŠ€νŠΈ μž…λ¬Έ
  • μ•Œκ³ λ¦¬μ¦˜
  • Python
  • DevOps
  • SQL 고득점 Kit
  • ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€
  • c++
  • λ‹€μ΄λ‚˜λ―Ή ν”„λ‘œκ·Έλž˜λ°
  • λ°±μ€€
  • SQL

졜근 κΈ€

250x250
hELLO Β· Designed By μ •μƒμš°.
mooonπŸŒ™

STUDY

μ½”λ”© ν…ŒμŠ€νŠΈ/λ°±μ€€ μ•Œκ³ λ¦¬μ¦˜

λ°±μ€€ 3896 _ μ†Œμˆ˜ 사이 μˆ˜μ—΄

2020. 4. 27. 16:27
728x90

https://www.acmicpc.net/problem/3896

 

3896번: μ†Œμˆ˜ 사이 μˆ˜μ—΄

문제 μ—°μ†ν•œ μ†Œμˆ˜ p와 p+n이 μžˆμ„ λ•Œ, κ·Έ 사이에 μžˆλŠ” n-1개의 ν•©μ„±μˆ˜(μ†Œμˆ˜λ‚˜ 1이 μ•„λ‹Œ μ–‘μ˜ μ •μˆ˜)λŠ” 길이가 n인 μ†Œμˆ˜ 사이 μˆ˜μ—΄λΌκ³  λΆ€λ₯Έλ‹€. μ–‘μ˜ μ •μˆ˜ kκ°€ μ£Όμ–΄μ‘Œμ„ λ•Œ, kλ₯Ό ν¬ν•¨ν•˜λŠ” μ†Œμˆ˜ 사이 μˆ˜μ—΄μ˜ 길이λ₯Ό κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€. kλ₯Ό ν¬ν•¨ν•˜λŠ” μ†Œμˆ˜ 사이 μˆ˜μ—΄μ΄ 없을 λ•ŒλŠ” 길이가 0이닀. 예λ₯Ό λ“€μ–΄, μ†Œμˆ˜ 23κ³Ό 29의 μ†Œμˆ˜ 사이 μˆ˜μ—΄μ€ {24, 25, 26, 27, 28}이고, κΈΈμ΄λŠ” 6이닀. μž…λ ₯ 첫째 쀄에 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€μ˜ 개수 T

www.acmicpc.net


⭐ λ‚΄ μ†ŒμŠ€ μ½”λ“œ

#include<iostream>
#include<vector>
using namespace std;


int main(void) {
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	vector<int> test_case;
	int num,temp,strat,end;
	bool * vec = new bool[1299710];
	
    //λ²”μœ„ λ‚΄ μ†Œμˆ˜κ°€ μ•„λ‹Œ μˆ˜λŠ” λͺ¨λ‘ true둜 μ„ΈνŒ…
	for (int i = 2; i < 1299710; i++) {
		for (int j = i; i*j>2 && i*j<1299710; j++) {
			vec[j*i] = true;
		}
	}


	cin >> num;
	for (int i = 0; i < num; i++) {
		cin >> temp;
		test_case.push_back(temp);
	}

	
	for (int j = 0; j < test_case.size(); j++) {
		int temp = test_case[j];
        //μ†Œμˆ˜κ°€ 아닐 경우
		if (vec[temp] == true) {
			strat = temp;
			end = temp;
			//μ†Œμˆ˜κ°€ λ‚˜μ˜¬ λ•Œ κΉŒμ§€ strat값을 쀄여쀀닀
			while (true) {
				if (vec[--strat]!= true) {
					break;
				}
			}
			//μ†Œμˆ˜κ°€ λ‚˜μ˜¬λ•ŒκΉŒμ§€ end값을 μ˜¬λ €μ€€λ‹€
			while (true) {
				if (vec[++end]!= true) {
					break;
				}
			}
			cout << end - strat<<'\n';
		}
        //μ†Œμˆ˜μΌ 경우
		else {
			cout << 0 << '\n';
		}
	}
	
	return 0;
}

 

πŸ™ 문제 풀이

  • λ„ˆλ¬΄ 큰 배열은 newλ₯Ό μ΄μš©ν•΄μ„œ μ„ μ–Έν•΄μ£Όμ–΄μ•Ό λœλ‹€
  • μœ„μ˜ 경우 배열이 0으둜 μžλ™ μ΄ˆκΈ°ν™”κ°€ λœλ‹€κ³  ν•œλ‹€
  • λ²”μœ„ λ‚΄μ˜ μ†Œμˆ˜κ°€ μ•„λ‹Œ μˆ˜λ“€μ„ μ—λΌν† μŠ€ν…Œλ„€μŠ€μ˜ 체λ₯Ό μ΄μš©ν•˜μ—¬ κ±ΈλŸ¬λ‚Έλ‹€
  • μž…λ ₯받은 μˆ˜κ°€ μ†Œμˆ˜κ°€ 아닐 경우, ν•΄λ‹Ή μˆ˜μ—μ„œ 계속 κ°μ†Œλ₯Ό μ‹œμΌœ κ°€μž₯ κ°€κΉŒμš΄ μ†Œμˆ˜λ₯Ό μ°Ύμ•„λ‚Έλ‹€ - strat
  • λ§ˆμ°¬κ°€μ§€λ‘œ ν•΄λ‹Ή μˆ˜μ—μ„œ 계속 μ¦κ°€μ‹œμΌœ κ°€μž₯ κ°€κΉŒμš΄ μ†Œμˆ˜λ₯Ό μ°Ύμ•„λ‚Έλ‹€ - end
  • end와 stratλ₯Ό λΊ€ 값이 μš°λ¦¬κ°€ κ΅¬ν•˜κ³ μž ν•˜λŠ” κ°’
  • μž…λ ₯받은 μˆ˜κ°€ μ†Œμˆ˜μΌ 경우 0을 좜λ ₯ν•΄μ€€λ‹€
728x90
μ €μž‘μžν‘œμ‹œ λΉ„μ˜λ¦¬ λ³€κ²½κΈˆμ§€ (μƒˆμ°½μ—΄λ¦Ό)
    'μ½”λ”© ν…ŒμŠ€νŠΈ/λ°±μ€€ μ•Œκ³ λ¦¬μ¦˜' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
    • λ°±μ€€ 1978 _ μ†Œμˆ˜ μ°ΎκΈ°
    • λ°±μ€€ 2960 _ μ—λΌν† μŠ€ν…Œλ„€μŠ€μ˜ 체
    • λ°±μ€€ 1644 _ μ†Œμˆ˜μ˜ 연속합
    • λ°±μ€€ 1016 _ 제곱 γ„΄γ„΄ 수
    mooonπŸŒ™
    mooonπŸŒ™
    개발 곡뢀 기둝

    ν‹°μŠ€ν† λ¦¬νˆ΄λ°”