전체 글에 해당하는 글 69

  1. 백준 28392023.08.18
  2. 시작한 계기2023.08.18
  3. 022023.08.17
  4. 012023.08.16
  5. 002023.08.14

백준 2839

Algorithm|2023. 8. 18. 19:32

처음엔 너무 쉬운 두문제를 풀어서 두개는 건너뛰고 기록한다.

 

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

 

2839번: 설탕 배달

상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그

www.acmicpc.net

알고리즘 분류는 DP와 Greedy인데 어떤 알고리즘이다 생각없이 그냥 막 푼것같다.

일단 절대 DP로 푼건 아니다.

 

using System;
using System.Collections.Generic;

namespace Sugar_Delivery
{
    class b2839
    {
        static void Main(string[] args)
        {
            int val = int.Parse(Console.ReadLine());

            Console.WriteLine(solution(val));

        }

        static int solution(int sugar)
        {
            int sol = sugar;
            int cnt = 0;

            for(int i = 0; i <= (sugar / 5); i++)
            {
                // i = big plastic bag num
                for(int j = 0; j <= (sugar - (5 * i)); j++)
                {
                    // j = small plastic bag num
                    if (((5 * i + 3 * j) == sugar) && i + j < sol)
                    {
                        sol = i + j;
                        cnt++;
                    }
                }
            }

            if (cnt == 0)
                return -1;
            else
                return sol;
        }
    }
}

'Algorithm' 카테고리의 다른 글

백준 1149  (0) 2023.08.20
백준 11866  (0) 2023.08.19
백준 12789  (0) 2023.08.19
백준 2798  (0) 2023.08.18
시작한 계기  (0) 2023.08.18

댓글()

시작한 계기

Algorithm|2023. 8. 18. 19:00

알고리즘 스터디.. 가끔씩 하더라도 매일 일기쓰기보다 힘들다.

거의 2년만에 다시 한 계기도 별건 없고 이제부터 개발하는데 C#을 쓸것 같아

C#에 적응도 할 겸 다시 풀어본다..

'Algorithm' 카테고리의 다른 글

백준 1149  (0) 2023.08.20
백준 11866  (0) 2023.08.19
백준 12789  (0) 2023.08.19
백준 2798  (0) 2023.08.18
백준 2839  (0) 2023.08.18

댓글()

02

Network|2023. 8. 17. 19:00

들어봤던 용어들도 정확하게 알고 가야할것 같다.

수업때 들어봤지만 잘 기억도 안나고, 모드버스 프로토콜을 공부하며 나오는 말들을 좀 더 알아보았다.

 

[네트워크]

라우팅
경로 정보를 분석해 현재 네트워크에서 다른 네트워크로 최적의 경로를 계산해
데이터를 전송하는 기법.

라우팅 테이블 : 토폴로지, 트래픽 부하 여부, 링크 비용 등 계산에 필요한 요소 기반으로
라우팅 프로토콜을 통해 계산된 라우팅 정보 저장된 테이블.

정적 라우팅 -> 관리자가 패킷 경로 수동으로 구성
동적 라우팅 -> 라우터가 라우팅 프로토콜의 계산에 따라 스스로 경로 결정

[참고] https://steady-coding.tistory.com/528

게이트웨이
다른 네트워크로 가기위한 관문. 같은 LAN 안에서는 MAC Address로 통신하기 때문에
게이트웨이 주소를 몰라도 상관없음.
자신의 네트워크 (ex: 192.168.0.1) 에서 다른 네트워크 (ex: 172.16.20)로 간다고 생각하면,
IPv4 마지막 주소인 192.168.0.xx 4번째 자리 주소가 네트워크의 갯수.
그 안에 게이트웨이 주소가 세팅되어 있어야 정상적으로 통신이 가능.
(subnet mask에서 단말의 수를 보고 네트워크의 수를 계산해서...)

[참고] https://ja-gamma.tistory.com/entry/%EA%B2%8C%EC%9D%B4%ED%8A%B8%EC%9B%A8%EC%9D%B4%EB%9E%80

시리얼 통신

serial(직렬) <-> parallel(병렬)
시리얼 통신에서는 데이터를 이진 펄스 형태로 전송. 
1: 논리 high, 0: 논리 low
Transmitter가 이진 펄스 형태로 보내고, Receiver가 높고 낮음 구분해 데이터로 읽는다.

이렇게 통신하려면 Transmitter와 Receiver가 Clock 동기화가 되어있어야함.
Clock: 어떤 시점에 이진 펄스를 논리 정보로 읽을것인지 시점 정하는 기준.
동기화가 안되어있으면 같은 데이터라도 이상하게 읽을 수 있다.
-> Clock Synchronization. 시리얼 통신에 꼭 필요하다. (interface에 따라 동기, 비동기)

Baud Rate: Trasmitter(이하 T)와 Receiver(이하 R) 사이의 초당 전송 bits 수.
일반적으로 9600인데, 1200, 2400, 4800, 57600 등 다양하게 씀.

Framing: 데이터 프레임. 시작과 정지 비트를 포함한 문자. 일반적으로 8 bits 사용

Error Control: 노이즈에 영향 주는 요소가 시리얼 통신에 많음. parity bits 검사.

동기 시리얼 프로토콜 : USB, CAN, SPI, I2C, Microwire
비동기 시리얼 프로토콜 : RS232, RS422, RS485

[참고] https://medium.com/newworld-kim/%EC%8B%9C%EB%A6%AC%EC%96%BC-serial-%ED%86%B5%EC%8B%A0%EC%9D%B4-%EB%AD%98%EA%B9%8C-bdf991a300b1


'Network' 카테고리의 다른 글

http 통신, 소켓 통신  (0) 2023.08.25
01  (0) 2023.08.16
00  (0) 2023.08.14

댓글()

01

Network|2023. 8. 16. 20:00

웹과 앱의 통신 방법에 대해 알아봐야 했다.

따로 알아봐야 해서 내가 몰랐던 다른것이 있는줄 알았다.

근데 다 알면서 몰랐던 것이라 정리했던걸 남겨놔보자.

 

1) HTTP 통신

API로 서버에서 던져주는게 제일 편하지 않을까?
클라이언트가 원하는 데이터가 있을건데
그게 웹이든, 앱이든 api로 요청하고 받아서 처리하고
그러면 구현해야 하는 일 -> API 작성 및 통신 구현
그리고 HTTP 통신.
JSON 형태로 데이터 주고받는다.

-> 이건 많이 해본거.

 

근데 API를 써보기만 하고 막상 자세히 뜯어서 공부해본 적은 없어서, 그냥 API를 써서 통신하면 되지않나?

라는 멍청한 생각을 하고있었다. 

 

API가 특별한 어떤 통신 방법이 아니다.

API는 HTTP 요청을 백엔드에 보냈을 때 실행되는 백엔드 기능.
프론트에서 HTTP라는 길을 통해 게시물 데이터를 백엔드에 보내 저장.
그럼 게시물이 아닌 다른 데이터는 어떻게 저장? -> 여러개의 HTTP 길 필요. 각 요청마다 담당자 필요.
여기서 이 담당자 -> API
API는 기능. 기능은 곧 함수. 백엔드 개발자가 만든 함수 = API.
API에 요청할 때 보내는 데이터는 API 함수로 들어갈 인자이고, 응답으로 받게되는 데이터가 API 함수의 return 데이터이다.

API의 요청 결과 타입이 JSON (JavaScript Object Notation)

 

https://velog.io/@sehee-xx/HTTP-%ED%86%B5%EC%8B%A0%EA%B3%BC-API

 

HTTP 통신과 API

HTTP 통신 HTTP란 두 컴퓨터간에 텍스트 데이터를 주고 받는 길이다. HTTP 라는 길로 요청(request)과 응답(response) 두 가지를 서로 주고 받을 수 있다. > HTTP 요청(request)과 응답(response) HTTP 요청(Request)

velog.io

API에 대한 설명은 위의 글을 참고했다. 가장 이해가 잘되는 설명이었다.

 

2) 소켓 통신

실시간으로 주고받는다.
소켓으로 연결, 서버와 통신
node.js에 socket.io --> 얘가 웹 소켓 안될땐 자동으로 http long-polling 대체.
하지만 소켓 통신 방식으로 개발한다 -> 보안 문제 신경 많이 써야한다(CORS, SSL인증서 등).

3) DB

DB서버에서 요청받고 데이터를 처리해 쿼리로 날려주던가

예전에 알바했던 곳은 DB에서 JSON으로 뽑아내서 처리하도록 했었는데 굳이 그렇게 할 이유는 없었던것 같다.

4) FTP

파일을 통신하는데 쓴다?? 왜??

============================================================================================

 

이렇게 네가지 방식이 주로 논의되었다.

DB와 HTTP 통신이 아무래도 제일 무난한 것 같고, 실시간으로 연결을 유지하며 데이터를 보여주려면 소켓 통신도 가능한 옵션이라고 생각된다.

 

근데 FTP는 P2P 사이트 같은데서 쓰는 방식인것 같은데, 이걸 통신 방법으로 채택해서 서비스한다? 이건 좀..

뭔가 좋은 비유가 생각이 나진 않지만, 좋은 방식은 아니라고 판단된다. 

'Network' 카테고리의 다른 글

http 통신, 소켓 통신  (0) 2023.08.25
02  (0) 2023.08.17
00  (0) 2023.08.14

댓글()

00

Network|2023. 8. 14. 19:00

어쩌다 보니 네트워크에 대해 어느정도 알고있어야 하게 되었다.

그래서 공부한 내용을 메모장에만 적긴 아까워서 옮겨놓기로 했다.

원래는 이 블로그에 게임 개발을 공부하면서 포트폴리오 처럼 남겨놓으려고 했는데..

 

한게 없으니 당연히 적을것도 없고, 이제와서 아무 내용이나 그냥 되는대로 적기로 했다. 

내가 얼마나 게으른진 내가 제일 잘 알아서 얼마나 적을지도 대충 알겠지만 다시 해봐야할듯.

'Network' 카테고리의 다른 글

http 통신, 소켓 통신  (0) 2023.08.25
02  (0) 2023.08.17
01  (0) 2023.08.16

댓글()