인터페이스 운영 배포 요청에 따라 고객, 자재, 재고 등의 인터페이스를 배포했는데

배포하면서 문제가 됐던 것들은 추가된 필드도 있지만

추가적인 작업을 하면서 key로 가져오기 위해 생성한 다른 개체들의 필드 또한 있어서 필드를 계속 생성해야 했다.

 

이후 배송 쪽 인터페이스 요청사항 관련 정의서와

요청사항들을 확인해서 문제가 될 필드들이 있는지 확인했고

SAP쪽 진입 필드와 SFDC 노출용 필드로 두배가 되어버려서 30여개의 필드를 생성했다.

 

생성 도중 긴급 에러 확인 요청이 들어왔는데

막상 내가 생성하니 문제가 없었고 원인을 파악하기 위해

일시 중지 및 실패 플로 인터뷰를 확인해보니 특정 필드 길이 제한이 초과된 것이었다.

 

해당 사항에 대해 공유드린 다음

제품이 아니라 상위 개체 또한 생성 시 에러가 발생할 경우

Flow 내부 Create 작업에서 에러를 포착하는 경로를 추가하고 에러메세지가 출력되도록 수정해줬다.

 

정의서 내부에는 어떻게 올지 확실한 정의가 되어 있지 않았고

코드 값 등으로 표기되도 상관없는지 고객사쪽에 먼저 확인한 다음

고객의 요청사항에 맞는 값들이 올 수 있도록 pickList 값들의 경우 매칭 값을 요청했고

특정 조합성 필드의 경우 값 전달 확인을 같이 요청했다.

 

이후 문제가 되는 필드들을 제외한 필드를 모두 생성하고 인터페이스에 반영해줬는데

중간쯤 진행된 상태에서 필드 세부 정보와 변경된 필드 또는 추가 필드를 전달받았고

해당 내용까지 반영해서 인터페이스를 마무리할 수 있었고

인터페이스 수신 부분이 완료된 것이기 때문에 SAP쪽에 해당 사항을 전달하고 마무리했다.

 

 

(1).백준 2252번 줄 세우기는 주어진 정보만으로 줄을 세워야 하는 문제였는데

다른 플로이드 워셜 문제랑은 다르게 해당 방식으로 감은 잡을 수 있지만 막상 줄을 세우기는 어려웠다.

 

문제 태그를 보니 위상 정렬이라는 방식의 문제였고

이론상 하위 정보들이 있는 애들을 각각 하위 정보를 배열에 담아놓고

최상위에 있는 0번째 애들을 처리해주고 그 다음 그 아래 애들의 위치 정보를 조절해주고

큐에 담긴 애들을 모두 처리한 시점에서 해결되는 문제였다.

 

이론을 알고 나니 간단하게 해결할 수 있었는데

그래프와 깊이를 담을 이중배열, 배열을 생성해주고

주어진 값을 이중배열에 넣어주고 배열에 깊이를 더해주는 방식으로 입력한 다음

위상정렬 방식에 따라 큐와 출력 순서를 담을 result 배열을 만들고

가장 먼저 최상단에 위치한 깊이 0 위치들을 큐에 담아줬다.

 

이후에는 while 순회문 내부에서 각각의 최상단을 순차적으로 꺼내서

각각 result 배열에 담고 하위 녀석들의 깊이를 한단계씩 증가시켜주고

만약 깊이가 0이 되면 큐에 다시 포함시키는 행동을 반복해서 모두 처리했다.

const input = `4 2
4 2
3 1`.split('\n').map(el => el.split(' ').map(Number))

const [n, m] = input[0]
const graph = []
const depth = new Array(n + 1).fill(0);

for(let i = 0 ; i <= n ; i++){
    graph.push(new Array())
}

for(let i = 1; i < input.length ; i++) {
    const [a, b] = input[i]
    graph[a].push(b);
    depth[b]++;
}

const queue = [];
const result = [];

for(let i = 1; i <= n; i++) {
    if(depth[i] == 0){
        queue.push(i);
    }
}

while (queue.length > 0) {
    const now = queue.shift();
    result.push(now);

    for (let i = 0; i < graph[now].length; i++) {
        const next = graph[now][i];
        depth[next]--;
        if (depth[next] == 0) {
            queue.push(next);
        }
    }
}

console.log(result.join(' '));

'회고' 카테고리의 다른 글

[개발일지] - 416  (0) 2024.08.22
[개발일지] - 415  (2) 2024.08.21
[개발일지] - 413  (0) 2024.08.19
[개발일지] - 412(주말)  (0) 2024.08.18
[개발일지] - 411(주말)  (0) 2024.08.17

+ Recent posts