[BOJ] 1940 주몽
Algorithm 2023. 1. 20. 02:23반응형
https://www.acmicpc.net/problem/1940
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
namespace _10822
{
class Program
{
static void Main()
{
StreamReader sr = new StreamReader(Console.OpenStandardInput());
//StringBuilder sb = new StringBuilder();
StreamWriter sw = new StreamWriter(Console.OpenStandardOutput());
// 번호를 정렬한 뒤
//
// 가장 앞 값과 가장 뒷 값의 인덱스를 변수로 잡는다
//
// 만약 더했을때 m과 같다면, 갑옷을 만드는데 사용하므로
//
// 앞값++, 뒷값--를 동시에 해주고
//
// m보다 크다면 뒷값이 너무 큰 경우이므로 뒷값--만,
//
// m보다 작다면 앞값이 너무 작은 경우이므로 앞값++만 해주면
//
// O(N)정도에 끝낼수 있다.
int n = int.Parse(sr.ReadLine());
int m = int.Parse(sr.ReadLine());
int[] arr = Array.ConvertAll(sr.ReadLine().Split(' '), int.Parse);
int cnt = 0;
Array.Sort(arr);
foreach (var num in arr)
{
sw.Write("{0}\t", num);
}
sw.WriteLine();
//투포인터
int start = 0;
int end = n - 1;
for (int i = 0; i<arr.Length; i++)
{
if (i == start)
{
sw.Write("↑ start\t");
}else if (i == end)
{
sw.Write("↑ end", i);
}
else
{
sw.Write("\t");
}
}
Console.WriteLine();
while(start<end){
if (arr[start] + arr[end] == m)
{
cnt++;
end--;
start++;
}
if(arr[start]+arr[end] > m)
end--;
if(arr[start]+arr[end] < m)
start++;
}
sw.WriteLine(cnt);
sr.Close();
sw.Close();
}
}
}
반응형
'Algorithm' 카테고리의 다른 글
[프로그래머스] 다트게임 (0) | 2023.01.20 |
---|---|
[BOJ] 21921 블로그 (0) | 2023.01.20 |
[BOJ] 1254 팰린드롬 만들기 (0) | 2023.01.20 |
[BOJ] 1159 농구 경기 (0) | 2023.01.20 |
[BOJ] 1764 듣보잡 (0) | 2023.01.20 |