일지

지구과학 백업 (오늘 블로그 완료 7일차)

UniCoti-sub 2024. 11. 13.
반응형
using System;
using System.Net.Http;
using System.Threading.Tasks;
using System.Xml;

namespace WeatherForecastApp
{
    class Program
    {
        static async Task Main(string[] args)
        {
            // 기상청 API URL
            string url = "http://apis.data.go.kr/1360000/VilageFcstInfoService_2.0/getVilageFcst";
            string serviceKey = "iZz7y8YLflOFKthnmJCobG%2F%2FSwWEEUYSGbGjBVy8erxgGicJ0eNZ0ZeVtDz8ZxjGMWNCsBimDtnraAPHUP0JcA%3D%3D"; // 여기에 발급받은 서비스 키를 입력하세요.
            string numOfRows = "10"; // 한 페이지에 보여줄 데이터 수
            string pageNo = "1"; // 페이지 번호

            // 영월의 nx, ny 좌표
            string nx = "56";
            string ny = "128";

            // API 요청 URL 구성
            string requestUrl = $"{url}?serviceKey={Uri.EscapeDataString(serviceKey)}&numOfRows={numOfRows}&pageNo={pageNo}&base_date=20241113&base_time=0500&nx={nx}&ny={ny}";

            using (HttpClient client = new HttpClient())
            {
                try
                {
                    // API 호출
                    HttpResponseMessage response = await client.GetAsync(requestUrl);
                    response.EnsureSuccessStatusCode(); // 응답 상태 코드 확인

                    // 응답 내용 읽기
                    string responseBody = await response.Content.ReadAsStringAsync();
                    Console.WriteLine("API 응답 내용:");
                    Console.WriteLine(responseBody); // 응답 내용 출력

                    XmlDocument xmlDoc = new XmlDocument();
                    xmlDoc.LoadXml(responseBody);

                    // 온도와 풍속 값 초기화
                    string temperature = null;
                    string windSpeed = null;

                    // item 요소를 순회
                    foreach (XmlNode item in xmlDoc.SelectNodes("//item"))
                    {
                        string category = item["category"]?.InnerText; // null 체크 추가
                        string value = item["fcstValue"]?.InnerText; // null 체크 추가

                        if (category == "TMP")
                        {
                            temperature = value;
                        }
                        else if (category == "WSD")
                        {
                            windSpeed = value;
                        }
                    }

                    // 결과 출력
                    Console.WriteLine($"온도: {temperature ?? "정보 없음"}도");
                    Console.WriteLine($"풍속: {windSpeed ?? "정보 없음"} m/s");
                }
                catch (HttpRequestException e)
                {
                    Console.WriteLine($"요청 오류: {e.Message}");
                }
                catch (XmlException e)
                {
                    Console.WriteLine($"XML 파싱 오류: {e.Message}");
                }
                catch (Exception e)
                {
                    Console.WriteLine($"알 수 없는 오류: {e.Message}");
                }
            }
        }
    }
}

api

 

using System;

namespace unicoti {
    class Program {
        
        static void Main()
        {
            int t = 0; //온도
            int h = 0; //습도
            int d = 0;  //미세먼지 농도
            int w = 0; //바람세기 (풍속)

            //0 : 나가지 마, 1: 별로, 2: 좋음, 3: 최적

            int[] intNumbers = Array.ConvertAll((Console.ReadLine()??"").Split(), int.Parse);
            t = intNumbers[0];
            h = intNumbers[1];
            d = intNumbers[2];
            w = intNumbers[3];

            if(t < 10) {
                t = 1;
            } else if (t > 10 && t < 20) {
                t = 2;
            } else if (t > 20 && t < 30) {
                t = 3;
            } else {
                t = 0;
            }

            if(h < 30) {
                h = 2;
            } else if (h > 30 && h < 60) {
                h = 3;
            } else if (h > 60 && h < 80) {
                h = 1;
            } else {
                h = 0;
            }

            if(d < 30) {
                d = 3;
            } else if (d > 30 && d < 80) {
                d = 2;
            } else if (d > 80 && d < 150) {
                d = 1;
            } else {
                d = 0;
            }

            if(w < 5) {
                w = 3;
            } else if (w > 5 && w < 10) {
                w = 2;
            } else if (w > 10 && w < 15) {
                w = 1;
            } else {
                w = 0;
            }

            int score = t + h + d + w;

            if(score > 10) {
                Console.WriteLine("나가기 최적!");
            } else if(score > 7) {
                Console.WriteLine("평범한 날씨");
            } else if(score > 4) {
                Console.WriteLine("안나가면 안될까?");
            } else {
                Console.WriteLine("나가면 안돼...");
            }
        }
           
    }
}

실제 로직

 

다음에 와서 하나 더 쓸지 모르겠지만 혹시나 안쓰면

아마 이게 오늘 블로그 완료 7일차가 될 듯.

반응형

'일지' 카테고리의 다른 글

오늘 블로그 완료 9일차  (5) 2024.11.15
오늘 블로그 완료 8일차  (7) 2024.11.14
오늘 블로그 완료 6일차  (1) 2024.11.12
소원의 섬 - 11편 (오늘 블로그 완료 4일차)  (0) 2024.11.11
오늘 블로그 완료 - 4일차  (3) 2024.11.10

댓글